Ubuntu开机启动Python脚本
注意事項(xiàng):如果腳本沒有執(zhí)行,首先應(yīng)該考慮執(zhí)行權(quán)限問題,查看腳本和相應(yīng)的文件是否有執(zhí)行權(quán)限,如果沒有需要賦予執(zhí)行權(quán)限。
方法1:
1.編寫一個(gè)shell腳本文件,例如python_auto.sh,文件內(nèi)容:
2.編寫start.py文件,里面執(zhí)行你需要服務(wù)器開啟執(zhí)行的操作
3.在 /etc/profile? 這個(gè)文件中,添加shell腳本文件路徑,例如:
在服務(wù)器開機(jī)時(shí)會(huì)自動(dòng)執(zhí)行 /etc/profile中的代碼
注: linux隨機(jī)啟動(dòng)的服務(wù)程序都在/etc/init.d這個(gè)文件夾里,里面的文件全部都是腳本文件,另外在/etc這個(gè)文件夾里還有諸如名為rc1.d, rc2.d一直到rc6.d的文件夾,這些都是linux不同的runlevel,我們一般進(jìn)入的X windows多用戶的運(yùn)行級(jí)別是第5級(jí),也就是rc5.d,在這個(gè)文件夾下的腳本文件就是運(yùn)行第5級(jí)時(shí)要隨機(jī)啟動(dòng)的服務(wù)程序。需要注意的是,在每個(gè)rc (1-6).d文件夾下的文件其實(shí)都是/etc/init.d文件夾下的文件的一個(gè)軟連接,也就是說,在 /etc/init.d文件夾下是全部的服務(wù)程序,而每個(gè)rc(1-6).d只鏈接它自己啟動(dòng)需要的相應(yīng)的服務(wù)程序! 還 需要注意的一點(diǎn)是,在rc5.d里,每個(gè)鏈接的名字都是以S或者K開頭的,S開頭的表示是系統(tǒng)啟動(dòng)是要隨機(jī)啟動(dòng)的,K開頭的是不隨機(jī)啟動(dòng)的。這 樣,你就可以知道,如果我要哪個(gè)服務(wù)隨機(jī)啟動(dòng),就把它名字第一個(gè)字母K改成S就可以了,當(dāng)然,把S改成K后,這個(gè)服務(wù)就不能隨機(jī)啟動(dòng)了。Ubuntu系統(tǒng)運(yùn)行級(jí)別: 0 ?系統(tǒng)停機(jī)狀態(tài) 1 ?單用戶或系統(tǒng)維護(hù)狀態(tài) 2~5 多用戶狀態(tài) 6 ?重新啟動(dòng)?
登錄時(shí)自動(dòng)運(yùn)行程序: 用戶登錄時(shí),bash首先自動(dòng)執(zhí)行系統(tǒng)管理員建立的全局登錄script :/ect/profile。然后bash在用戶起始目錄下按順序查找三個(gè)特殊文件中的一個(gè):/.bash_profile、/.bash_login、 /.profile,但只執(zhí)行最先找到的一個(gè)。 因此,只需根據(jù)實(shí)際需要在上述文件中加入命令就可以實(shí)現(xiàn)用戶登錄時(shí)自動(dòng)運(yùn)行某些程序。 退出登錄時(shí)自動(dòng)運(yùn)行程序: 退出登錄時(shí),bash自動(dòng)執(zhí)行個(gè)人的退出登錄腳本/.bash_logout。
實(shí)例:
/opt/abc.sh?
#!/bin/shnohup /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 &?
&符號(hào)為讓腳本后臺(tái)運(yùn)行,不在命令行顯示結(jié)果
方法3:
編寫一個(gè)service,并讓service開機(jī)自啟動(dòng)(CentOS 7)
/usr/lib/systemd/system/? 目錄下存儲(chǔ)了很多以service為后綴的服務(wù)文件,systemctl就是根據(jù)這些服務(wù)文件來管理服務(wù)。
編寫自己的服務(wù)文件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具體各項(xiàng)參數(shù)百度下即可,service文件編寫完成后即可使用systemctl來管理。
systemctl enable test.service? ?# 該命令使服務(wù)開機(jī)自啟動(dòng)
那么開機(jī)后,systemctl工具會(huì)自動(dòng)運(yùn)行該服務(wù)文件中ExecStart參數(shù)填寫的命令
方法4:針對(duì)Ubuntu18.04
最近在使用Ubutnu18.04,我突然發(fā)現(xiàn)沒有rc.local文件了,原來是因?yàn)樵谛掳姹救拷y(tǒng)一使用systemctl來管理服務(wù)了,開機(jī)自啟動(dòng)服務(wù)也不例外。
vim /lib/systemd/system/rc-local.service# 添加install參數(shù) [Install] WantedBy=multi-user.target Alias=rc-local.servicetouch /etc/rc.local # 創(chuàng)建rc.local文件,默認(rèn)沒有創(chuàng)建將需要開機(jī)自啟動(dòng)的命令寫在rc.local中就可以了systemctl status rc.local和systemctl status rc-local 你會(huì)發(fā)現(xiàn)用的是同一個(gè)service文件,即rc-local.service 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的Ubuntu开机启动Python脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: USACO-Section2.2 Run
- 下一篇: 网络基础知识——以太网