• 最開始剛剛接觸高級編程語言寫出來一個web程序的時候,我就開始建立了一個網站,但是當時把后端部署到服務器上如何離線運行呢?退出了ssh連接就會停止運行,我當時不熟悉linux,所以使用了一個最愚蠢的辦法,用nohup來運行,哈哈哈,后來才知道systemd,最近又在開發,雖然在測試階段,還是分享一下,讓小白也能優雅的將程序托管給systemd
  • 首先給出一個模板:
[Unit]
Description=瑜伽api的測試
After=network.target

[Service]
ExecStart=/bin/bash /home/yang/workspace/yoga/apiYoga/shell/apiStart.sh
WorkingDirectory=/home/yang/workspace/yoga
Restart=always
User=yang
Group=yang
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin"
StandardOutput=journal
StandardError=journal
SyslogIdentifier=yoga

[Install]
WantedBy=multi-user.target

你只需要寫一個shell,然后把執行的命令寫入這個shell中,把shell交給systemd來執行就好了
接下來是注意事項

  1. 新建文件的位置應該在/etc/systemd/system/ 中,并且命名應該為name.service

  2. 使用之前需要先使用 echo $PATH 得到PATH的內容,然后再在Environment中寫入如下內容,你不這樣做的話連cd,ls這種最基本的功能都不能使用

Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin"
  1. 記得每次對/etc/systemd/system/中的內容進行修改新增之前都進行如下操作:
sudo systemctl daemon-reload
  1. 查看日志:
sudo journalctl -u yoga.service

這個命令能查看到指定的service的日志,而

journalctl -xe

這個命令則不一樣,這個是查看最近使用的這個service的,簡單來說會好一點.因為一個service不是stop之后日志就會被刪除,也就是說我可能使用了10次,systemd真就把這十次的都給我保存了下來,那么一開始的內容很自然的就是第一次的,而不是我大概率想看到的第11次的.
有一個補救的辦法

sudo journalctl -u yoga.service --since "1 hour ago"

這里的hour可以換成minutes或者minute(很棒,對單復數不分的人很友好),這樣查看日志很舒服