Linux下設置python腳本文件為服務
阿新 • • 發佈:2018-09-20
syntax blank port 詳細 hot r環境 fig 註意 tables
(最簡單的方式nohup python xxx.py)
-------------------------------------------------------------------------------------------------------------------
Python腳本開機自動運行;本帖適用於使用systemd的Linux系統,現在流行的Linux發行版都使用systemd。
後臺服務程序是隨系統自啟動的,我們只要把Python腳本配置為服務就行了。需要註意的一點是你Python腳本的啟動時機,它依賴不依賴其他服務(網絡連接、一些分區的掛載等等)。
#1 Python腳本
一個你要自啟動的Python腳本,我使用 /home/snail/autorun.py為例。
#2 創建Unit配置文件
1 | $ sudo vim /lib/systemd/system/autorun.service |
寫入如下內容:
1 2 3 4 5 6 7 8 9 10 |
[Unit]
Description=Test Service
After=multi-user.target
[Service]
Type=idle |
上面定義了一個叫 Test Service 的服務,它在multi-user環境起來之後運行;ExecStart參數指定我們要運行的程序;idle確保腳本在其他東西加載完成之後運行,它的默認值是simple。
註意使用絕對路徑。
為了獲得腳本的輸出信息,我們可以重定向到文件:
1 |
ExecStart=/usr/bin/python /home/snail/autorun.py > /home/snail/autorun.log 2>&1 |
更改配置文件的權限:
1 | $ sudo chmod 644 /lib/systemd/system/autorun.service |
#3 使配置文件生效
1 2 | $ sudo systemctl daemon-reload $ sudo systemctl enable autorun.service |
#4 重啟
1 | $ sudo reboot |
#5 查看服務狀態
1 | $ sudo systemctl status autorun.service |
#6 服務操作命令
systemctl命令是系統服務管理器指令,它實際上將 service 和 chkconfig 這兩個命令組合到一起。
任務 | 舊指令 | 新指令 |
使某服務自動啟動 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服務不自動啟動 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
檢查服務狀態 | service httpd status | systemctl status httpd.service (服務詳細信息) systemctl is-active httpd.service (僅顯示是否 Active) |
顯示所有已啟動的服務 | chkconfig --list | systemctl list-units --type=service |
啟動某服務 | service httpd start | systemctl start httpd.service |
停止某服務 | service httpd stop | systemctl stop httpd.service |
重啟某服務 | service httpd restart | systemctl restart httpd.service |
實例
1.啟動nfs服務
systemctl start nfs-server.service
2.設置開機自啟動
systemctl enable nfs-server.service
3.停止開機自啟動
systemctl disable nfs-server.service
4.查看服務當前狀態
systemctl status nfs-server.service
5.重新啟動某服務
systemctl restart nfs-server.service
6.查看所有已啟動的服務
systemctl list -units --type=service
開啟防火墻22端口
iptables -I INPUT -p tcp --dport 22 -j accept
如果仍然有問題,就可能是SELinux導致的
關閉SElinux:
修改/etc/selinux/config
文件中的SELINUX=””
為disabled,然後重啟。
徹底關閉防火墻:
sudo systemctl status firewalld.service
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
Linux下設置python腳本文件為服務