赞
踩
一直以来都有一个需求,就是开机执行一个自动连网,并且发送ip地址到邮箱的python程序。现在针对这个需求做了一些调试有了一个成熟的实现方案,现在分享一下。
首先,为了实现这个需求,我们需要准备如下,第一个是 需要执行启动的python脚本,我们可以暂且命名为 run.py。还有一个就是启动 这个run.py的shell脚本,我们命名为 internet_connector.sh。
如果想要脚本可以开机启动,需要遵循一定的格式,具体如下所示:
#!/bin/bash
### BEGIN INIT INFO
# Provides: internet_connector.sh
# 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: starts the internet_connector.sh daemon
# Description: starts internet_connector.sh using start-stop-daemon
### END INIT INFO
python3 /bin/run.py 2>&1 >/dev/null &
注意,对于注释部分,我们可以修改的只有脚本名字, 如果你的脚本名字是 xxx.sh, 那么可以将上述脚本中的 internet_connnector.sh 替换成 xxx.sh 。
首先,我们应该将 run.py 和 internet_connector.sh 放到合适的路径下。对于 run.py 我们可以将其放到 /bin/ 路径下。对于 internet_connector.sh 需要开机执行我们要放到 /etc/init.d/ 路径下。
并且我们需要给 internet_connector.sh 加上可执行权限,命令如下:
sudo chmod a+x /etc/init.d/internet_connector.sh
执行系统设置的主要目的是让系统可以识别出 internet_connector.sh 脚本,将其当作一个可以开机执行的任务。
sudo update-rc.d internet_connector.sh defaults 100
注意 defaults 后的数字100表示这是开机后第100个需要执行的任务,通常可以设置的大一点,保证该任务不要干扰到系统其他启动任务的执行。设定好之后系统就可以识别这个任务了,可以通过下面的命令,启动该任务。或者直接重启也可以。
systemctl restart internet_connector
其实利用crontab也可以实现开机启动脚本。
systemctl status cron
检查 crontab工具是否启动。
systemctl start cron
如果没有启动,则通过systemctl启动它。
sudo crontab -e
编辑crontab文本文件,将下面命令写入。
@reboot /path/to/your/script.sh
该方法经过验证,也可以成功执行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。