我在我的日志中看到这条消息: systemd[1]: foo.service holdoff time over, scheduling restart. 在这里我找不到“释放时间”一词: https://www.freedesktop.org/software/systemd/man/systemd.service.html 我可以在哪里更改延期时间?
所以我写了一个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。 我做错了什么导致这个问题?
我使用下面的configuration来启动beanstalkd进程 [Service] ExecStart=/usr/local/bin/beanstalkd ExecStartPost=pgrep beanstalkd > /var/run/beanstalkd.pid 最后一行应该是在启动过程后生成一个pidfile,但是文件不会被创build。 为什么? 还是有另一种方法来强制systemid创buildpidfile?
在CentOS-7中,systemd的/etc/systemd/system.conf文件中的选项需要重新启动,还是需要“systemctl daemon-reload”?
我使用systemd:Instantiated Services的很好的function。 有一个简单的方法来重新加载一个调用所有实例化的服务? 例如:我不想像这样运行: systemctl restart autossh@foo systemctl restart autossh@bar systemctl restart autossh@blu 我试过这个,但是这不起作用 systemctl restart autossh@* 相关: 使用一个systemd服务文件启动N个进程
在Fedora 19中,我找不到在哪里设置umask(为php脚本创build的文件设置适当的权限)(具体来说,我希望新文件具有权限664)
我有一个基于systemd的系统,它包含一个带有LSB头文件的System V风格的init.d脚本。 init.d脚本只能在挂载fstab中的所有文件系统后才能启动。 如何在LSB头文件中指定这种types的依赖关系?
我正在通过systemd运行java应用程序: [Unit] Description=test service [Service] Type=simple EnvironmentFile=/etc/sysconfig/testserver WorkingDirectory=/opt/testserver ExecStart=/usr/bin/java -jar /opt/testserver/test.jar StandardOutput=syslog StandardError=syslog User=testserver Group=testserver SyslogIdentifier=testserver [Install] WantedBy=multi-user.target 我想在/opt/testserver/stdout.log和/opt/testserver/stderr.log stdout – 任何工作选项是可以接受的(即如果可能通过syslog )。 如果可能的话,我想避免在日志logging中至lesslogging其中之一。 谢谢…
我的系统: CentOS 7.2.1511(核心) Apache 2.4.6 我有很多我想添加到Apache的环境variables。 我目前正在通过添加到我的/etc/httpd/conf.d/vhosts.conf文件,如下所示: SetEnv API_USERNAME 'my_special_username' SetEnv API_PASSWORD 'my_special_password' 我可以通过以下方式访问PHP中的两个环境variables: echo $_SERVER['API_USERNAME']; echo $_SERVER['API_PASSWORD']; // or echo getenv('API_USERNAME'); echo getenv('API_PASSWORD'); 最近 ,我发现我也可以通过systemd添加环境variables: 我创build了文件/etc/systemd/systemd/httpd.service.d/envvars.conf : [Service] Environment="API_USERNAME=my_special_username" Environment="API_PASSWORD=my_special_password" systemctl daemon-reload systemctl restart httpd 我可以通过以下方式访问PHP中的两个环境variables: echo getenv('API_USERNAME'); echo getenv('API_PASSWORD'); // $_SERVER does not work when I specify environment variables in systemd echo $_SERVER['API_USERNAME']; […]
使用CoreOS,Docker和systemd来pipe理我的服务我想正确执行服务发现。 由于CoreOS使用etcd(分布式键值),因此有一个非常方便的方法来做到这一点。 在systemd的ExecStartPost上,我可以将启动的服务插入到etcd中而没有问题。 我的用例需要这样的东西: ExecStartPost=/usr/bin/etcdctl set /services/myServiceName '{ \"host\": \"%H\", \"port\": 5555 }' 它像一个魅力。 但这是我的想法popup的地方。 如果我只是运行docker run -p 5555 ,Docker有权随机分配一个端口,因为我不必在* .service文件中静态设置它,而且我可以在同一台主机上运行多个实例。 如果我可以得到随机分配的端口,而不是静态5555 ? 原来,我可以使用docker port命令来获取端口,并使用一些格式,我们可以得到端口 $(echo $(/usr/bin/docker port my-container-name 5555) | cut -d':' -f2) 如果我设置它(使用bash),如下所示: /usr/bin/etcdctl set /services/myServiceName '{ \"host\": \"%H\", \"port\": '$(echo $(/usr/bin/docker port my-container-name 5555) | cut -d':' -f2)' }' 但使用systemd我只是不能得到它的工作。 这是我正在使用的代码: ExecStartPost=/usr/bin/etcdctl […]