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
启动服务 - 遵循与上述相同的验证步骤
如果您发现在您的环境中运行新贵脚本有任何问题,请告诉我。 享受你的一天和快乐的编码。