我正在尝试yum update在 RHEL 7.4之后重新启动服务。我可以使用 systemctl 重新启动每个服务,但是needs-restartingfromyum utils告诉我我也应该重新启动 systemd 本身:
# needs-restarting
1 : /usr/lib/systemd/systemd --system --deserialize 21
Run Code Online (Sandbox Code Playgroud)
我可以在systemd不重新启动服务器的情况下重新启动吗?如何重新启动?
我发现了一些关于 的提及systemctl daemon-reload,但这并没有使它从需要重新启动列表中消失。
我正在定义要在不同发行版中使用的通用 bash 文件。我需要一种方法来检查系统是使用 systemd 还是 sysvinit (/etc/init.d/)。我需要这个,所以我运行适当的命令来启动服务。检查这个的安全方法是什么?我目前检查 systemctl 命令是否存在,但这真的是一个选项,因为可能存在 systemctl 命令可用的情况,但这并不一定意味着实际使用了 systemd?
这是我当前 bash 脚本的摘录:
#!/bin/sh
if [ command -v systemctl >/dev/null ]
then
systemctl service start
else
/etc/init.d/service start
fi
Run Code Online (Sandbox Code Playgroud) 我有一台安装了 lightdm 的运行 Debian 8 (Jessie) 的远程机器。我希望它以无 GUI 模式启动,但我不想删除所有与 X 相关的东西,以便仍然能够通过带-X参数的SSH 运行它。那么如何禁用 X 服务器自动启动而不删除它呢?
我试过systemctl stop lightdm,它停止了 lightdm,但它在重新启动后再次运行。我也试过systemctl disable lightdm,但它基本上什么都不做。它在/etc/rc*.d目录中重命名lightdm的脚本,但它在重新启动后仍然启动,所以我做错了什么?而且我不能只是update-rc.d lightdm stop,因为它已被弃用并且不起作用。
这个(缩短的)systemd 服务文件有问题:
[Unit]
Description=control FOO daemon
After=syslog.target network.target
[Service]
Type=forking
User=FOOd
Group=FOO
ExecStartPre=/bin/mkdir -p /var/run/FOOd/
ExecStartPre=/bin/chown -R FOOd:FOO /var/run/FOOd/
ExecStart=/usr/local/bin/FOOd -P /var/run/FOOd/FOOd.pid
PIDFile=/var/run/FOOd/FOOd.pid
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
让FOOd为用户名,FOO为组名,我的 daemon 已经存在/usr/local/bin/FOOd。
我需要/var/run/FOOd/在/usr/local/bin/FOOd通过# systemctl start FOOd.service. 这失败了,因为 mkdir 由于权限无法创建目录:
...
Jun 03 16:18:49 PC0515546 mkdir[2469]: /bin/mkdir: cannot create directory /var/run/FOOd/: permission denied
Jun 03 16:18:49 PC0515546 systemd[1]: FOOd.service: control process exited, code=exited status=1
...
Run Code Online (Sandbox Code Playgroud)
为什么 mkdir 在 ExecStartPre 失败,我该如何解决?(不,我不能对 mkdir 使用 sudo …
我正在尝试制作一个每 15 分钟运行一次的 systemd 计时器。现在我有:
timer-fifteen.timer:
[Unit]
Description=15min timer
[Timer]
OnBootSec=0min
OnCalendar=*:*:0,15,30,45
Unit=timer-fifteen.target
[Install]
WantedBy=basic.target
Run Code Online (Sandbox Code Playgroud)timer-fifteen.target:
[Unit]
Description=15min Timer Target
StopWhenUnneeded=yes
Run Code Online (Sandbox Code Playgroud)这一遍又一遍地运行,没有停止。有必要*:0,15,30,45:*代替吗?我怎样才能使这项工作?
你如何阻止命令service <name> status使用less在它的输出?
我有一个脚本可以自动执行一些 sysadmin 操作,在我将服务器升级到 Ubuntu 16.04 后,它中断了,因为检查服务状态的操作被阻塞,因为它使用类似less显示输出的东西,特别是supervisor服务。
我有几个守护进程配置为运行,当运行时sudo service supervisor status,我得到:
* supervisor.service - Supervisor process control system for UNIX
Loaded: loaded (/lib/systemd/system/supervisor.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2017-02-06 20:35:34 EST; 12h ago
Docs: http://supervisord.org
Process: 18476 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
Main PID: 20228 (supervisord)
CGroup: /system.slice/supervisor.service
|- 7387 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
|- 7388 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A …Run Code Online (Sandbox Code Playgroud) 我知道它们都是单元文件,但我无法理解它们的特殊含义。我认为目标类似于守护进程,套接字与套接字(IP + 端口)相同,但也与 inode 编号相同。任何人都可以用简单的词来解释它们吗?
我克隆了一个磁盘(SSD)并将克隆的磁盘放入另一台机器。现在两个系统在/etc/machine-id. 简单地编辑/etc/machine-id以更改值有什么问题吗?我可以在系统运行时执行此操作吗(或者我是否需要从 Live USB 启动)?
是systemd-machine-id-setup更好的选择吗?
天真的使用systemd-machine-id-setup不起作用。我尝试了以下步骤:
nano /etc/machine-id (to remove the existing value)
systemd-machine-id-setup
> Initializing machine ID from D-Bus machine ID.
cat /etc/machine-id
Run Code Online (Sandbox Code Playgroud)
新值与旧值相同。
发出关闭命令后,有时会收到如下状态消息:
Run Code Online (Sandbox Code Playgroud)A stop job is running for Session 1 of user xy
然后系统挂起一段时间,或永远取决于 ???
那么究竟什么是“停工”呢?
另外,为什么它有时会非常准确地估计所需的时间,而有时它可以永远运行?
我有一个 systemd 服务,需要在 中创建一个目录/run,否则以非 root 用户身份运行。从博客示例中,我得出了以下解决方案:
[Unit]
Description=Startup Thing
[Service]
Type=oneshot
ExecStart=/usr/bin/python3 -u /opt/thing/doStartup
WorkingDirectory=/opt/thing
StandardOutput=journal
User=thingUser
# Make sure the /run/thing directory exists
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /run/thing
ExecStartPre=/bin/chmod -R 777 /run/thing
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
神奇之处在于评论后面的 3 行。显然ExecStartPre's 将以这种方式以 root 身份运行,但ExecStart将以指定用户身份运行。
这导致了 3 个问题:
-在前面做什么/bin/mkdir?我不知道它为什么在那里或它做什么。ExecStartPre一个单元文件中有多个's 时,它们是否只是按照在单元文件中找到的顺序连续运行?或者其他什么方法?