itp*_*guy 29 systemd init services
我创建了以下服务,amos.service,它需要作为 amos(amos 组的成员)运行
[Unit]
Description=AMOS Service
After=network.target
[Service]
User=amos
Group=amos
Type=simple
WorkingDirectory=/usr/share/amos
ExecStart=/usr/share/amos/amos_service.sh start
ExecStop=/usr/share/amos/amos_service.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
所有权限都已设置/usr/share/amos为amos:amos
amos_service.sh 如下:
#!/bin/bash
CUDIR=$(dirname "$0")
cd /usr/share/amos
start() {
exec /usr/share/amos/run_amos.sh >> /var/log/amos.log 2>&1
}
stop() {
exec pkill java
}
case $1 in
start|stop) "$1" ;;
esac
cd "$CURDIR"
Run Code Online (Sandbox Code Playgroud)
当我最初运行该服务而不对目录进行任何修改时,这意味着属于 root 并且 amos.service 没有 User not Group 参数,一切运行良好!
一旦我将目录权限更改为 amos:amos 并添加 amos.service 用户和组,该服务将无法工作,我得到以下信息:见附图
ctx*_*ctx 15
使用 systemd:
要显示问题journalctl -xe,请在启动服务后使用。
你不需要 bash 脚本,把它放在你的服务文件中:
ExecStart=/usr/share/amos/run_amos.sh
Run Code Online (Sandbox Code Playgroud)
不需要ExecStop,systemd 会停止所有子进程。您可以查看输出journalctl -u amos.service。
小智 7
我认为你想要分叉而不是简单。Simple 假设您的进程没有退出,因此当它退出时,它会调用该进程死亡。
您可能希望删除 amos_service.sh 脚本并将其功能放入 amos.service。
| 归档时间: |
|
| 查看次数: |
95148 次 |
| 最近记录: |