正确地做。

正确地做。

如何将我的 bash 脚本作为 CentOS 7 中的服务?以下失败。

$ cat /etc/systemd/system/mybash.service
[Unit]
Description=mybash Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/root/runme.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target

$ systemctl start mybash
$ systemctl status mybash -l
mybash.service - mybash Service
   Loaded: loaded (/etc/systemd/system/mybash.service; disabled)
   Active: inactive (dead)
.....

$ cat /root/runme.sh 
#!/bin/bash
echo "Start the node server"
a=$(pgrep -f "a.js");
kill $a;
a=$(pgrep -f "b.js");
kill $a;
node /home/www/html/a.js &
node /home/www/html/b.js &

答案1

正确地做。

  • 不要forever在服务经理下使用。他们已经这样做了。
  • 不要在服务管理器下使用pgrep和。kill他们在这方面做得更好。
  • 不要start-stop-daemon在服务经理下使用。他们在这方面做得更好。

使用该 shell 脚本的整个机制一开始就是错误的,修复其就绪协议不匹配只是简单地掩盖了一些巨大的漏洞。您根本不需要任何整个拼凑在一起的可怜的守护进程管理脚本。你可以做这些事情的服务经理直接地安全地。用它。

# /etc/systemd/系统/[电子邮件受保护]
[单元]
描述=%i.js 的节点服务
文档=https://unix.stackexchange.com/questions/207658/
之后=网络.目标

[服务]
类型=简单
ExecStart=/usr/local/bin/node /home/www/html/%i.js
重新启动=中止时
SyslogIdentifier=节点-%i

[安装]
WantedBy=多用户.target

/usr/local/bin/node根据需要修复路径。然后应用常用命令:

进一步阅读

相关内容