116 lines
2.8 KiB
Plaintext
116 lines
2.8 KiB
Plaintext
|
|
使用 systemd 设置开机自启动
|
|||
|
|
|
|||
|
|
systemd 是现代Linux发行版的初始化系统和服务管理器,它可以用来配置开机时自动启动Python脚本。
|
|||
|
|
|
|||
|
|
步骤:
|
|||
|
|
|
|||
|
|
创建一个 systemd 服务单元文件。例如,假设你的脚本路径是 /home/user/myscript.py,你可以创建一个自定义的 systemd 服务文件。
|
|||
|
|
|
|||
|
|
创建一个新的服务单元文件:
|
|||
|
|
|
|||
|
|
sudo nano /etc/systemd/system/myscript.service
|
|||
|
|
|
|||
|
|
|
|||
|
|
在文件中输入以下内容:
|
|||
|
|
|
|||
|
|
[Unit]
|
|||
|
|
Description=My Python Script
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
ExecStart=/usr/bin/python3 /home/user/myscript.py
|
|||
|
|
Restart=always
|
|||
|
|
User=user # 这里的user是执行脚本的用户
|
|||
|
|
WorkingDirectory=/home/user
|
|||
|
|
StandardOutput=journal
|
|||
|
|
StandardError=journal
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
|
|||
|
|
|
|||
|
|
这里的 ExecStart 是运行 Python 脚本的命令,Restart=always 确保脚本崩溃时会自动重启,User 是运行脚本的用户(你可以根据需要修改)。
|
|||
|
|
|
|||
|
|
使 systemd 重新加载配置文件并启动服务:
|
|||
|
|
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
sudo systemctl enable myscript.service # 开机启动
|
|||
|
|
sudo systemctl start myscript.service # 立即启动
|
|||
|
|
|
|||
|
|
|
|||
|
|
可以通过以下命令查看脚本的运行状态:
|
|||
|
|
|
|||
|
|
sudo systemctl status myscript.service
|
|||
|
|
|
|||
|
|
2. 使用 cron 配置开机自启动
|
|||
|
|
|
|||
|
|
cron 是Linux中的定时任务工具,使用它的 @reboot 选项可以在每次系统启动时运行指定的脚本。
|
|||
|
|
|
|||
|
|
步骤:
|
|||
|
|
|
|||
|
|
编辑当前用户的 cron 配置文件:
|
|||
|
|
|
|||
|
|
crontab -e
|
|||
|
|
|
|||
|
|
|
|||
|
|
在文件末尾添加以下行:
|
|||
|
|
|
|||
|
|
@reboot /usr/bin/python3 /home/user/myscript.py
|
|||
|
|
|
|||
|
|
|
|||
|
|
保存文件并退出。系统启动后,Python脚本会自动运行。
|
|||
|
|
|
|||
|
|
3. 使用 rc.local (适用于较旧的Linux系统)
|
|||
|
|
|
|||
|
|
在一些老旧的Linux系统中,/etc/rc.local 文件用于执行开机时的脚本。现代Linux系统可能不再支持 rc.local,但你仍然可以尝试这种方法。
|
|||
|
|
|
|||
|
|
步骤:
|
|||
|
|
|
|||
|
|
编辑 rc.local 文件:
|
|||
|
|
|
|||
|
|
sudo nano /etc/rc.local
|
|||
|
|
|
|||
|
|
|
|||
|
|
在文件的 exit 0 之前添加:
|
|||
|
|
|
|||
|
|
/usr/bin/python3 /home/user/myscript.py &
|
|||
|
|
|
|||
|
|
|
|||
|
|
保存并退出,确保 /etc/rc.local 文件具有执行权限:
|
|||
|
|
|
|||
|
|
sudo chmod +x /etc/rc.local
|
|||
|
|
|
|||
|
|
|
|||
|
|
这样系统启动时会执行该Python脚本。
|
|||
|
|
|
|||
|
|
4. 使用 init.d (传统方式)
|
|||
|
|
|
|||
|
|
在老旧的Linux系统中,init.d 也可以用来管理服务。
|
|||
|
|
|
|||
|
|
创建一个新的脚本文件在 /etc/init.d/ 目录下:
|
|||
|
|
|
|||
|
|
sudo nano /etc/init.d/myscript
|
|||
|
|
|
|||
|
|
|
|||
|
|
在文件中写入如下内容(以Debian/Ubuntu为例):
|
|||
|
|
|
|||
|
|
#!/bin/bash
|
|||
|
|
### BEGIN INIT INFO
|
|||
|
|
# Provides: myscript
|
|||
|
|
# Required-Start: $local_fs $network $remote_fs $syslog
|
|||
|
|
# Required-Stop: $local_fs $network $remote_fs $syslog
|
|||
|
|
# Default-Start: 2 3 4 5
|
|||
|
|
# Default-Stop: 0 1 6
|
|||
|
|
# Short-Description: Start my Python script at boot time
|
|||
|
|
### END INIT INFO
|
|||
|
|
|
|||
|
|
/usr/bin/python3 /home/user/myscript.py &
|
|||
|
|
|
|||
|
|
|
|||
|
|
保存并关闭文件,赋予执行权限:
|
|||
|
|
|
|||
|
|
sudo chmod +x /etc/init.d/myscript
|
|||
|
|
|
|||
|
|
|
|||
|
|
启动脚本并使其在开机时自启:
|
|||
|
|
|
|||
|
|
sudo update-rc.d myscript defaults
|