Linux運行服務的幾種方式

摘要

1. nohup &
2. screen
3. bg & disown
4. systemd
5. crontab @reboot

背景

最近一直在用linux
想着多總結一下.
因爲服務運行的方式比較多, 想着也能夠多總結一下
便於後面的問題處理

nohup 的方式

nohup 是最簡單的一種啓動服務的方式
nohup 的含義在於防止被終端. 
& 的方式是將服務放在後臺運行
所以一般的方式爲:
nohup ./xxxx & 
shell關了,後者是網絡終端還會繼續運行.

screen的方式

yum install screen -y
可以使用  screen 的命令打開服務窗口

screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠程detach某個session
screen -d -r yourname -> 結束當前session並回到yourname這個session

可以通過 screen -S zhaobsh 打開一個session 進行命令的輸入
如果網絡出問題. 這個服務還是會一直存在的. 避免網絡終端導致問題.

bg & disown

有時候很多服務都是必須有交互纔可以的. 
此時通過nohup的方式不太合適.
如果機器又不能上網, 此時使用 screen 可能比較麻煩
所以可以使用 
ctrl+z的方式暫時中斷服務
然後根據反饋的任務號
通過 
bg %數字 
的方式進行設置服務後臺運行. 
然後在使用
disown -h %數字 
可以講這個服務與 當前的shell進程斷掉聯繫. 
這樣服務就從一個前臺服務 變成了後臺服務. 

systemd

可以添加一個 systemd的服務  基本上可以如圖進行設置
一般位於 /etc/systemd/system/ 下面
比如可以建立一個文件爲 app.service
可以使用 systemctl  enable app 設置開機自動啓動
然後使用systemctl start app 來啓動服務

[Unit]
Description=app

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
WorkingDirectory=/app
Restart=always
Type=forking
ExecStart=/app/startup.sh
ExecStop=/usr/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

crontab

可以設置計劃任務,開機自動動服務
比較簡單. 
第一: systemctl status crond
需要保證計劃任務是開啓的. 
第二: 需要編寫一套啓動腳本比如
cat /etc/startredis <<EOF
cd /redis && ./redis-server /redis/redis.conf 
EOF
chmod 700 /etc/startredis

第三設置開機啓動
crontab -e
增加一行配置
@reboot /etc/startredis

注意配置方式跟vim 是一樣的
insert 進入輸入模式
ESC 退出到命令模式
輸入 :wq 保存並且退出.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章