因此,我编写了一个 golang 应用程序,systemd
每当我的服务器重新启动时,我都希望对其进行初始化。
这是服务文件:-
[Unit]
Description=golang wiki initialization
[Service]
Type=forking
PIDFile=/tmp/gowiki.pid-3030
User=root
Group=root
WorkingDirectory=/var/www
ExecStart=/bin/bash -c 'daemonize -o stdout.log -e stderr.log /var/www/wiki'
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
每当我重新启动服务器时,它似乎都能很好地工作,但是当我gowiki
在终端中手动启动或重新启动时,我仍然遇到了一些令人恼火的问题:-
systemctl start gowiki
Run Code Online (Sandbox Code Playgroud)
或者
systemctl restart gowiki
Run Code Online (Sandbox Code Playgroud)
这确实让我的 gowiki 进程运行;然而,在我执行我的systemctl start gowiki
命令后,我被冻结在我的终端中,并且在我手动强制按下 Ctrl-C 之前,该命令似乎不会退出。
我做错了什么导致这个问题?
这奏效了。
[Unit]
Description=golang wiki initialization
[Service]
PIDFile=/tmp/gowiki.pid-4040
User=root
Group=root
WorkingDirectory=/var/www
ExecStart=/bin/bash -c '/var/www/wiki'
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
因为Type=forking
服务期望父服务在服务实际启动之前退出。如果父进程从不退出,那么 systemctl start 不会给你回提示,因为它认为它没有完成执行。
归档时间: |
|
查看次数: |
7901 次 |
最近记录: |