我想在系统启动时使用systemd
. 我试图通过添加上面的脚本来做到这一点。但是服务没有开始。
我的启动服务
[Unit]
Description=Startup
[Service]
ExecStart=/usr/local/sbin/my-startup.sh
[Install]
WantedBy=multi-user.target
我的启动.sh
cd /var/www/test.com
nohup java -jar *.jar>test.out 2>test.err &
但是服务器启动时应用程序没有启动。
● my-startup.service - Startup
Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Wed 2018-12-12 16:22:52 +0530; 27s ago
Process: 650 ExecStart=/usr/local/sbin/my-startup.sh (code=exited, status=0/SUCCESS)
Main PID: 650 (code=exited, status=0/SUCCESS)
Dec 12 16:22:52 localhost.localdomain systemd[1]: Started Startup.
Dec 12 16:22:52 localhost.localdomain systemd[1]: Starting Startup...
使用 systemd 指令代替 shell 会产生更一致的环境。这包括通过提供已知的完整路径而不依赖于 $PATH 或工作目录。
既不
&
需要作业控制,也不SIGHUP
需要管理。systemd 服务单元已经在后台运行。假设程序没有分叉,换句话说 java exec 继续运行,那就是
Type=simple