首页域名资讯 正文

使用 Shell Script 将程序添加到 Linux Service 并设置为开机启动

2025-01-14 2 0条评论

创建一个简单的测试脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #! /bin/bash date|tee -a /program_log case $1 in start) echo “start” >> /program_log ;; stop) echo “stop” >> /program_log ;; *) echo “Wrong command” >> /program_log esac

保存到 /program 然后 chmod +x /program ,并在根目录创建 program_log。这个程序会将当前时间追加到 /program_log 中,同时输出执行程序时输入的命令参数。执行 /program start 后可以看到 /program_log 中出现了时间和命令参数。

1 2 Mon Jul 25 14:25:58 UTC 2016 start

为使用 service 的发行版设置系统服务

在使用 service 的发行版(如 Ubuntu 14.04,Debian 7,CentOS 6 等)中,执行 service xxx aaa 这样的命令,实际上是 service 调用 /etc/init.d/xxx ,并将第二个参数 aaa 传入该 xxx 中。例如执行 service nginx start ,service 就会调用 /etc/init.d/nginx ,并将 start 传入 nginx 。因此我们需要为 program 程序编写一个 service 可执行文件保存到 /etc/init.d/program-service

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #! /bin/bash start() { /program start } stop() { /program stop } case $1 in start) start ;; stop) stop ;; *) echo “Invalid option” ;; esac

这个 service 实际上是调用位于根目录下的 program 脚本来执行各种命令。

此时如果执行 service program-service start 会提示 program-service: unrecognized service ,这是因为我们还没有更改 program-service 的权限为可执行。chmod +x /etc/init.d/program-service 后重新执行上一个命令,可以看到 program-log 变为:

1 2 3 4 Mon Jul 25 14:25:58 UTC 2016 start Mon Jul 25 14:38:33 UTC 2016 start

至此该程序已经添加到了系统 service 命令中。

为使用 service 的发行版设置开机启动

对于大多数的 Linux 发行版而言,开机启动的配置信息保存在 /etc/rc.local ,所以我们只需要将 service program-service start 添加到 /etc/rc.local 中即可实现开机启动 program 程序。

为使用 systemd 的发行版设置系统服务

对于一些复杂的程序,service 的脚本可能也极其复杂,而在一些使用 systemd 的发行版(如 CentOS 7等)中则不存在这个问题。我们只需要编写一个 program-service.service 文件保存到 /lib/systemd/system/etc/systemd/system/ 中即可。

1 2 3 4 5 6 7 8 [Unit] Description=Just a test Documentation=https://trustauth.cn [Service] Type=simple ExecStart=/program start ExecStop=/program stop

其具体的参数含义及配置方法可参照:

https://www.trustauth.cn/software/systemd/man/systemd.service.html

另外在修改了 service 文件的一些选项后会提示需要重载 service ,这时候执行 systemctl daemon-reload 进行重载。

随后执行 systemctl start program-service 即可启动服务。

为使用 systemd 的发行版设置开机启动

经过上面的配置后,我们只需要执行 systemctl enable program-service 这一条命令即可实现开机启动。


数安时代(GDCA)是一家提供信息安全证书的运营企业,从事信息安全证书数十载,在信息安全方面拥有雄厚的实力。GDCA已通过WEBTRUST国际认证,具备了国际化的电子认证服务能力。其中,GDCA的 产品之一SSL证书是一种服务器端的数字证书,它能确保用户在使用SSL协议进行数据交换时验证和确保数据安全。GDCA SSL证书使用的加密长度是128/256位。据目前IT技术,40位强度的证书暴力破解耗费4小时,而对于128位证书破解需要一万亿年以上。目前,GDCA SSL证书是国内领先的安全证书。日后,GDCA将会坚持不断深入研发,为各大网络商业平台提供更安全的信息安全证书,为网络安全虚拟世界贡献一份微弱的力量。

文章版权及转载声明

本文作者:亿网 网址:https://edns.com/ask/post/151293.html 发布于 2025-01-14
文章转载或复制请以超链接形式并注明出处。