Ubuntu开机启动Python脚本

注意事项:如果脚本没有执行,首先应该考虑执行权限问题,查看脚本和相应的文件是否有执行权限,如果没有需要赋予执行权限。

方法1:

1.编写一个shell脚本文件,例如python_auto.sh,文件内容:

2.编写start.py文件,里面执行你需要服务器开启执行的操作

3.在 /etc/profile  这个文件中,添加shell脚本文件路径,例如:

在服务器开机时会自动执行 /etc/profile中的代码

注: linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件,另外在/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d的文件夹,这些都是linux不同的runlevel,我们一般进入的X windows多用户的运行级别是第5级,也就是rc5.d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接,也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序! 还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。Ubuntu系统运行级别: 0  系统停机状态 1  单用户或系统维护状态 2~5 多用户状态 6  重新启动 

登录时自动运行程序: 用户登录时,bash首先自动执行系统管理员建立的全局登录script :/ect/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。 因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序。 退出登录时自动运行程序: 退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。

实例:

/opt/abc.sh 

#!/bin/sh

nohup /usr/bin/python2 /opt/agent.py >/dev/null 2>&1 &

/etc/profile 最后面添加

bash /opt/abc.sh

方法2:

在/etc/rc.local文件中添加一行:

/usr/bin/python2.7 /usr/local/qlya/timing_insert.py & 

&符号为让脚本后台运行,不在命令行显示结果

方法3:

编写一个service,并让service开机自启动(CentOS 7)

/usr/lib/systemd/system/  目录下存储了很多以service为后缀的服务文件,systemctl就是根据这些服务文件来管理服务。

编写自己的服务文件test.service,然后放入该目录,EXP:

[Unit]
Description=test
Documentation=empty
After=network.target remote-fs.target nss-lookup.target mysqld.service
 
[Service]
Type=oneshot
PIDFile=/run/test.pid
ExecStartPre=
ExecStart=/apps/bin/python /apps/test.py
ExecReload=
ExecStop=
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

具体各项参数百度下即可,service文件编写完成后即可使用systemctl来管理。

systemctl enable test.service   # 该命令使服务开机自启动

那么开机后,systemctl工具会自动运行该服务文件中ExecStart参数填写的命令

方法4:针对Ubuntu18.04

最近在使用Ubutnu18.04,我突然发现没有rc.local文件了,原来是因为在新版本全部统一使用systemctl来管理服务了,开机自启动服务也不例外。

vim /lib/systemd/system/rc-local.service
 
# 添加install参数
[Install]  
WantedBy=multi-user.target  
Alias=rc-local.service
 
touch /etc/rc.local # 创建rc.local文件,默认没有创建
 
将需要开机自启动的命令写在rc.local中就可以了
 
systemctl status rc.local和systemctl status rc-local
你会发现用的是同一个service文件,即rc-local.service
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨痕诉清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值