2024-08-16

要在Linux上使用systemctl实现开机自启动Python程序,你需要创建一个systemd服务单元文件。以下是一个简单的步骤和示例代码:

  1. 创建一个新的服务单元文件,例如/etc/systemd/system/my_python_service.service
  2. 在服务单元文件中定义服务的配置,包括启动命令和描述。
  3. 重新加载systemd管理器配置。
  4. 启用服务以在开机时自动启动。
  5. 启动服务测试是否能正常运行。

以下是一个简单的服务单元文件示例:




[Unit]
Description=My Python Service
After=network.target
 
[Service]
ExecStart=/usr/bin/python3 /path/to/your/script.py
 
[Install]
WantedBy=multi-user.target

将上面的内容保存到/etc/systemd/system/my_python_service.service文件中,并替换/path/to/your/script.py为你的Python脚本的实际路径。

接下来,运行以下命令:




sudo systemctl daemon-reload
sudo systemctl enable my_python_service.service
sudo systemctl start my_python_service.service

确保你的Python脚本具有执行权限:




sudo chmod +x /path/to/your/script.py

现在,每次开机时,你的Python程序都将自动启动。

2024-08-16

以下是一个简化的Linux补丁制作指南,用于生成一个基本的补丁文件。

  1. 准备工作:确保系统中已安装diff工具。
  2. 选择一个目录来存放你的源代码和补丁文件。
  3. 创建一个原始版本的文件或目录,并在其中进行修改以创建一个新版本。
  4. 使用diff命令创建补丁。



diff -uN from-file to-file > patch-file
  • -u 表示使用统一格式(unified format)。
  • -N 表示处理存在空文件的情况。
  • from-file 是原始文件或原始目录。
  • to-file 是修改后的文件或目录。
  • patch-file 是生成的补丁文件。

例如:




diff -uN original_code modified_code > mypatch.patch
  1. 应用补丁:



patch original-file < patch-file
  • original-file 是要应用补丁的原始文件。
  • patch-file 是之前生成的补丁文件。

例如:




patch original_code < mypatch.patch

确保在应用补丁之前备份原始文件,以防补丁不符合预期或需要撤销更改。

2024-08-16

在Linux上搭建SFTP服务器,通常需要以下步骤:

  1. 安装OpenSSH服务器。
  2. 创建一个SFTP用户,并设置限制访问的目录。
  3. 配置sshd\_config文件以启用SFTP。
  4. 重启SSH服务。

以下是具体的命令和配置示例:




# 安装OpenSSH服务器
sudo apt-get update
sudo apt-get install openssh-server
 
# 创建一个新的用户,例如 sftpuser
sudo adduser sftpuser
 
# 设置SFTP用户的主目录访问权限(如果需要)
sudo chroot_directory_var_chroot_sftpuser
 
# 编辑 /etc/ssh/sshd_config 文件
sudo nano /etc/ssh/sshd_config
 
# 在sshd_config中添加或修改以下行,启用chroot环境并指定sftp作为默认的shell
# 确保Subsystem sftp指向sftp-server
Subsystem sftp internal-sftp
 
# 指定用于sftp的chroot目录
Match User sftpuser
    ChrootDirectory /var/chroot/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
 
# 保存并关闭sshd_config文件
 
# 重启SSH服务
sudo service ssh restart

确保替换sftpuser为你想要创建的用户名,替换/var/chroot/sftpuser为你想要限制访问的目录。

这样,你就成功地在Linux上搭建了一个SFTP服务器,并且为指定用户设置了访问限制。

2024-08-16

在Linux文件系统中,每个文件都有一个inode(索引节点),它包含了文件的元数据,比如文件的大小、所有者、创建时间等。但是,inode并不包含文件名,文件名存储在目录项(directory entry)中,目录项关联了文件名和inode号。

软链接(symbolic link)就是一个常规文件,它含有另一文件的路径指向那个文件的inode。当你读取软链接的内容时,你实际上读取的是它指向的文件的路径。

硬链接(hard link)是一个指向inode的新的文件名,它允许你用不同的文件名访问同一个文件。硬链接的创建不会复制文件内容,它仅仅创建新的文件名指向已存在的inode。

对于读写权限,Linux文件系统使用9位权限位来控制。前三位是模式(模式为空格或者t,表示普通文件或者目录,还有一个t代表sticky bit),接下来的三位是所有者权限(user),再接下来的三位是组权限(group),最后三位是其他人(others)的权限。每个位可以设置为r(读权限)、w(写权限)、x(执行权限)或者-(无权限)。

例如,如果你想给一个文件设置所有者可读写执行,组用户可读执行,其他人无权限,你可以使用如下命令:




chmod 750 filename

如果你想给一个文件设置软链接,你可以使用如下命令:




ln -s target_file soft_link_file

如果你想给一个文件设置硬链接,你可以使用如下命令:




ln target_file hard_link_file
2024-08-16

在Linux中,Debian系统可以使用 pm-utils 包来实现挂起和休眠功能。以下是如何设置和使用这些功能的步骤:

  1. 安装 pm-utils



sudo apt-update
sudo apt-get install pm-utils
  1. 编辑 /etc/pm/config.d/config 文件(如果不存在,可以创建它),确保以下行是这样设置的:



SUSPEND_MODULES="usb-storage usb-storage-extra"

这将阻止系统在休眠时挂载USB存储设备,以避免在唤醒时出现问题。

  1. 使用以下命令进入休眠模式:



sudo pm-suspend
  1. 如果你想要使用Hibernate(将内存状态保存到硬盘),确保你有足够的硬盘空间,并且在 /etc/pm/config.d/config 文件中设置:



HIBERNATE_MODULES="usb-storage usb-storage-extra"

然后使用以下命令进入休眠模式:




sudo pm-hibernate
  1. 为了使命令快捷方便,你可以为它们创建一些快捷键或者脚本。

请注意,在执行挂起或休眠操作之前,确保所有的数据已经保存,因为这些操作可能会影响系统的性能和稳定性。

2024-08-16

在Windows和Linux上安装JDK并配置环境变量的步骤如下:

Windows 系统

  1. 下载JDK:访问Oracle官网或者其他JDK供应商网站下载对应版本的JDK。
  2. 安装JDK:双击下载的安装程序,按提示进行安装。
  3. 配置环境变量:

    • 右键点击“我的电脑”或“此电脑”,选择“属性”。
    • 点击“高级系统设置”。
    • 在“系统属性”窗口中选择“环境变量”。
    • 在“系统变量”区域点击“新建”,创建一个新的环境变量JAVA\_HOME。
    • 变量名输入JAVA_HOME,变量值输入JDK安装路径,例如C:\Program Files\Java\jdk1.8.0_201
    • 在“系统变量”中找到并选择Path变量,点击“编辑”,在弹出的窗口中点击“新建”,添加%JAVA_HOME%\bin
  4. 验证安装:打开命令提示符(cmd),输入java -versionjavac -version,如果正确显示版本信息,则说明安装和环境变量配置成功。

Linux 系统

以Ubuntu为例:

  1. 打开终端。
  2. 更新包列表:

    
    
    
    sudo apt update
  3. 安装OpenJDK:

    
    
    
    sudo apt install default-jdk
  4. 验证安装:

    
    
    
    java -version
    javac -version

如果需要安装特定版本的JDK,可以从Oracle官网下载对应的.tar.gz文件,解压后手动配置环境变量。

配置环境变量:




# 设置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
 
# 更新PATH变量
export PATH=$JAVA_HOME/bin:$PATH

将上述配置添加到~/.bashrc~/.profile文件中,然后执行source ~/.bashrcsource ~/.profile来应用更改。

再次运行java -versionjavac -version验证配置。

2024-08-16



#!/bin/bash
# 安装mosquitto MQTT代理服务
 
# 定义mosquitto版本和源码下载地址
MOSQUITTO_VERSION="2.0.14"
MOSQUITTO_DOWNLOAD_URL="https://mosquitto.org/files/source/mosquitto-${MOSQUITTO_VERSION}.tar.gz"
 
# 安装依赖
sudo apt-get update
sudo apt-get install -y build-essential cmake libssl-dev uuid-dev
 
# 下载mosquitto源码
cd /tmp || exit
wget "${MOSQUITTO_DOWNLOAD_URL}"
tar -xzf "mosquitto-${MOSQUITTO_VERSION}.tar.gz"
cd "mosquitto-${MOSQUITTO_VERSION}" || exit
 
# 编译和安装mosquitto
cmake -DCMAKE_INSTALL_PREFIX=/usr .
make
sudo make install
 
# 创建系统服务文件
sudo tee /etc/systemd/system/mosquitto.service <<EOF
[Unit]
Description=Mosquitto MQTT v${MOSQUITTO_VERSION} Broker
After=network.target
 
[Service]
User=mosquitto
ExecStart=/usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
# 创建mosquitto用户和配置目录
sudo adduser --system --no-create-home --disabled-login --group mosquitto
sudo mkdir /etc/mosquitto
sudo touch /etc/mosquitto/mosquitto.conf
 
# 重新加载系统服务守护进程
sudo systemctl daemon-reload
 
# 启动mosquitto服务
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
 
# 检查服务状态
sudo systemctl status mosquitto

这段代码提供了在Ubuntu系统上安装mosquitto服务的步骤。它首先安装了编译mosquitto所需的依赖,然后下载、解压并编译了mosquitto源码。接着,它创建了系统服务文件,并为mosquitto代理创建了用户和配置目录。最后,它重新加载了系统服务守护进程,启动并检查了mosquitto服务的状态。这个过程提供了一个简洁的安装和配置mosquitto服务的示例。

2024-08-16

在Linux系统中,GPIO(通用输入/输出)引脚可以通过/sys/class/gpio 目录进行操作。以下是使用这个接口进行GPIO操作的基本步骤:

  1. 导出GPIO引脚。
  2. 配置GPIO模式(输入或输出)。
  3. 读取或写入GPIO值。
  4. 撤销导出的GPIO。

下面是一个简单的示例脚本,展示了如何使用shell脚本操作GPIO:




#!/bin/sh
 
# GPIO 编号定义
GPIO=42
 
# 导出GPIO
echo $GPIO > /sys/class/gpio/export
 
# 设置GPIO模式为输出,如果需要输入则使用 echo in > /sys/class/gpio/gpio$GPIO/direction
echo out > /sys/class/gpio/gpio$GPIO/direction
 
# 写入GPIO值,1为高电平,0为低电平
echo 1 > /sys/class/gpio/gpio$GPIO/value
 
# 读取GPIO值
echo $(cat /sys/class/gpio/gpio$GPIO/value)
 
# 撤销导出的GPIO
echo $GPIO > /sys/class/gpio/unexport

确保你有足够的权限来操作GPIO,通常需要root权限。在运行这个脚本之前,请确认GPIO编号的正确性,并根据你的硬件进行适当的调整。

2024-08-16

在Linux系统中安装Python3环境,可以通过包管理器来进行。以下是在不同Linux发行版中安装Python3的命令:

对于Ubuntu和Debian系统:




sudo apt-get update
sudo apt-get install python3

对于CentOS系统:




sudo yum install python3

对于Fedora系统:




sudo dnf install python3

对于Arch Linux系统:




sudo pacman -S python3

安装完成后,可以通过以下命令检查Python3的版本:




python3 --version

如果需要pip(Python包管理工具),可以使用以下命令安装:




sudo apt-get install python3-pip  # Ubuntu
sudo yum install python3-pip      # CentOS
sudo dnf install python3-pip      # Fedora
sudo pacman -S python3-pip        # Arch Linux

安装pip后,可以通过以下命令安装Python包:




pip3 install package_name
2024-08-16



# 安装Chrony
sudo apt-install chrony -y
 
# 配置Chrony服务器
echo "server 0.pool.ntp.org iburst" | sudo tee /etc/chrony/sources.list
echo "server 1.pool.ntp.org iburst" | sudo tee -a /etc/chrony/sources.list
echo "server 2.pool.ntp.org iburst" | sudo tee -a /etc/chrony/sources.list
echo "server 3.pool.ntp.org iburst" | sudo tee -a /etc/chrony/sources.list
 
# 允许特定的NTP客户端访问
echo "allow 192.168.0.0/24" | sudo tee -a /etc/chrony/acls.conf
 
# 重启Chrony服务以应用更改
sudo systemctl restart chrony
 
# 检查Chrony的同步状态
chronyc tracking

这段代码演示了如何在Ubuntu系统上安装和配置Chrony NTP服务器。它首先通过apt-install命令安装Chrony软件包。然后,它通过重定向输出到sources.list文件来配置NTP服务器,使用iburst选项以更快的速度进行初次同步。接着,它允许了特定IP范围的客户端访问NTP服务。最后,它重启Chrony服务并检查其同步状态。