我有一个带有 systemd的Arch Linux 系统,我已经创建了自己的服务。配置服务/etc/systemd/system/myservice.service如下所示:
[Unit]
Description=My Daemon
[Service]
ExecStart=/bin/myforegroundcmd
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
现在我想为/bin/myforegroundcmd. 我怎么做?
假设我写了一个mine.service文件。然后我使用systemctl enable mine.service.
如果我后来决定编辑mine.service,我是否必须告诉systemd它mine.service已更改?如果是这样,我该怎么做?
有许多不同的地方可以放置 systemd 单元文件。仅给定服务名称,是否有一种快速简便的方法可以询问 systemd 从何处读取服务声明?
所以,说我从一个SSH会话断开连接,我已经开始之后rsync或cp或其他任何命令,可以是长期运行。在我断开连接后,该命令会一直运行直到完成还是只是被杀死?
一直想知道这个。
我创建一个systemd。服务文件,我需要帮助理解之间的差异Requires=和After=。该手册页说,Requires=“对其他单位提供配置需求的依赖。” 和After=“配置单元之间的排序依赖关系”。有什么不同?
我在问题下的意思是:有没有办法转储有序列表(就像 pstree 对进程所做的那样)以查看 systemd 如何执行提供的单元集,即依赖项解决后的树和作业排队等待执行? 我知道你可以通过分析 systemd 状态数据来做到这一点,但是有没有一种快速的方法来查看这样的树?这对故障调查有很大帮助(例如,如果您发现启动过程卡在某个单元上,您将能够确定大概位置以进行更深入的调查。
在较旧的 Linux 系统中,该logger命令可用于向 syslog 发送日志消息。
阅读在 Arch Linux 中将其消息记录到何处logger?,如果设置了用于消息转发的套接字,syslog消息和logger命令行应用程序似乎只与systemd日志对话。
那么logger命令的现代等价物是什么?如何从命令行直接向 systemd 日志发送消息?
我不想通过创建新的 systemd 脚本来做正确的事情,我只想让旧的 init 脚本再次工作,因为我已将系统升级到使用 systemd 的操作系统。
我已经简要地研究了如何转换 init 脚本以及如何编写 systemd 脚本,但我确信正确地学习它并正确地完成它需要我几个小时。
目前的情况是:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Run Code Online (Sandbox Code Playgroud)
和:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Run Code Online (Sandbox Code Playgroud)
现在,我只想回去工作。让它再次工作的阻力最小的路径是什么?
我不想弄清楚这一切——我真的不想——但我必须这样做,而且我已经发现了我的第一个线索:
sudo systemctl enable solr
Synchronizing state for solr.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d solr defaults
insserv: warning: script 'K01solr' missing LSB tags and overrides
insserv: …Run Code Online (Sandbox Code Playgroud) 我有一个守护进程,/var/run它的 PID 文件需要自己的目录,并授予守护进程的用户写权限。
我发现我可以使用以下命令创建这个目录:
# mkdir /var/run/mydaemon
然后我可以将其所有权更改为我希望在其下运行该进程的用户/组:
# chown myuser:myuser /var/run/mydaemon
但是每当我重新启动时,这个目录就会消失!每次机器启动时如何创建这个目录?
我正在尝试使用在 Docker 中运行的 CentOS 映像列出服务
systemctl list-units
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
Failed to get D-Bus connection: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
任何建议可能是什么问题?