所以我写了一个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
它似乎工作得很好,每当我重新启动服务器,但我仍然遇到稍微恼人的问题,当我在terminal手动启动或重新启动gowiki : –
systemctl start gowiki
要么
systemctl restart gowiki
这确实让我的gowiki进程运行; 但是,执行我的systemctl start gowiki命令后,我冻结在我的terminal和命令似乎不会退出,直到我手动强制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
由于Type=forking服务期望父服务在服务实际启动之前退出。 如果父母从不退出,那么systemctl start将不会给你回提示,因为它不认为它已经执行完毕。