systemctl start/stop service:如何在 Ubuntu、CentOS、Redhat Linux 中設置 Upstart 腳本和 Respawn 進程
已發表: 2021-06-09如何為systemd編寫啟動腳本?
systemd
是所有最新版本的 Linux 發行版(如 Ubuntu OS、Redhat OS、CentOS)中最新的service management utility
。
這就是為什麼 Ubuntu 17.4 和 Redhat 7.4 版本現在支持systemctl command
作為 upstart 腳本。 如果您使用的是舊版本的 Linux 操作系統,那麼您可能需要查看此頁面底部以查看舊的init.d script
我們將在本教程中討論以下內容
- 設置 systemd 服務單元
- 如何
configure
systemd? - 如何
enable
它systemd? - 如何使用 systemd 自動啟動進程?
- 如何使用 systemd 停止和
respawn
進程?
本教程的設置步驟:
Prerequisite:
我們已經在/tmp/crunchify
文件夾中編譯了 CrunchifyAlwaysRunningProgram.java 程序版本。 這個java進程將永遠在後台運行。 你可以從這裡下載程序。
一旦你下載它然後try to compile
它並運行它以確保它工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
root @ crunchify : / tmp / crunchify # ls -ltr - rw - r -- r -- 1 root root 120 Oct 6 17 : 57 crunchify . tar . gz drwxr - xr - x 2 root root 4096 Oct 6 18 : 01 tomcat drwxr - xr - x 2 root root 4096 Oct 6 18 : 02 java - rw - r -- r -- 1 root root 621 Oct 7 16 : 06 package - rwxrwxrwx 1 root root 838 Oct 7 16 : 07 CrunchifyAlwaysRunningProgram . java - rwxrwxrwx 1 root root 1295 Oct 8 14 : 38 CrunchifyAlwaysRunningProgram . class root @ crunchify : / tmp / crunchify # javac CrunchifyAlwaysRunningProgram.java root @ crunchify : / tmp / crunchify # java CrunchifyAlwaysRunningProgram always running program == > Sun Oct 08 14 : 39 : 14 UTC 2017 always running program == > Sun Oct 08 14 : 39 : 16 UTC 2017 . . . . . . . . . |
您可以鍵入CTRL + C
退出程序。
現在讓我們開始為上述程序設置 systemd 自動啟動腳本。
第1步
- 轉到文件夾/lib/systemd/system
- 鍵入
cd /lib/systemd/system
第2步
- 創建文件
crunchify.service
(相應地更改文件名) - 將以下內容放入其中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[ Unit ] Description = Crunchify Java Process Restart Upstart Script After = auditd . service systemd - user - sessions . service time - sync . target [ Service ] User = root TimeoutStartSec = 0 Type = simple KillMode = process export JAVA_HOME =/ opt / java / jdk - 9 export PATH = $ PATH : $ JAVA_HOME / bin WorkingDirectory =/ tmp / crunchify ExecStart =/ opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram Restart = always RestartSec = 2 LimitNOFILE = 5555 [ Install ] WantedBy = multi - user . target |

第三步
- 保存存檔
- 使用
chmod 755 crunchify.service
提供執行權限
第四步
- 使用命令
systemctl daemon-reload
加載 crunchify.service - 使用命令
systemctl enable crunchify.service
- 使用命令
systemctl start crunchify
- 使用命令
systemctl status crunchify
的狀態
第 5 步
- 現在檢查進程是否正在運行?
- 鍵入命令
ps -few | grep java
ps -few | grep java
查看所有正在運行的 Java 進程 - 你應該看到這樣的東西
1 2 3 |
root @ crunchify : / lib / systemd / system # ps -few | grep java root 28631 1 0 14 : 02 ? 00 : 00 : 03 / opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram root 28853 28226 0 14 : 46 pts / 0 00 : 00 : 00 grep java |
這意味著進程28631
正在開始使用您的新貴腳本。 您可能有不同的進程 ID。
如何驗證您的 systemd crunchify.service 是否正常工作?
- 嘗試使用
kill -9 28631
殺死進程,您應該會看到應該自動創建新進程。 - 在我的情況下,創建了新的進程 ID
28887
1 2 3 4 |
root @ crunchify : / lib / systemd / system # kill -9 28631 root @ crunchify : / lib / systemd / system # ps -few | grep java root 28887 1 17 14 : 48 ? 00 : 00 : 00 / opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram root 28900 28226 0 14 : 48 pts / 0 00 : 00 : 00 grep java |
視頻:完整的 Live systemd upstart 腳本設置示例:
該視頻包含 – 如何在 CentOS、Redhat、Ubuntu Linux 操作系統中設置 systemd 啟動/upstart 腳本?
- 如何在啟動引導時自動執行 shell 腳本
- 如何在 Linux (CentOS 7) 中創建 systemd 服務
- 如何將 Linux 服務配置為自動啟動?
- Centos 7 systemd 啟動腳本
- Ubuntu systemd 啟動腳本
想了解更多關於 systemd 的信息嗎? 這是一份備忘單供您參考。
我希望您了解everything about systemd command
和在所有類型的 Linux 操作系統上設置 upstart 腳本的所有知識。
停止:僅適用於舊版操作系統
如果您運行的是older version
的 Redhat、Ubuntu、CentOS 版本,那麼您將需要這種格式的腳本。
- 轉到
/etc/init
- 創建文件
crunchify.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Run Crunchify's Java program indefinitely # description "Crunchify Java Process Restart Upstart Script" author "Crunchify.com (App Shah)" start on runlevel [ 2345 ] stop on runlevel [ ! 2345 ] respawn respawn limit 10 5 script su - root < < 'EOF' export JAVA_HOME =/ opt / java / jdk - 9 export PATH = $ PATH : $ JAVA_HOME / bin exec / opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram EOF end script |
- 只需使用命令
service crunchify start
啟動服務 - 遵循與上述相同的驗證步驟
如果您發現在您的環境中運行新貴腳本有任何問題,請告訴我。 享受你的一天和快樂的編碼。