标签: systemd

systemd 如何自动启动并控制 VirtualBox 来宾?

在我的特殊情况下,在安装了 Ubuntu 18.04 Bionic 和 VirtualBox-5.2.20 的新服务器后,自动启动 guest 虚拟机的旧方法似乎不再可用。并不是说它有那么美妙——但它确实有效。似乎没有任何干净的方法可以解决这个问题 - systemd 和 VirtualBox 如何协同工作实现智能启动、控制和关闭?

virtualbox systemd

2
推荐指数
1
解决办法
7780
查看次数

如何使用 cron 停止 systemd 服务?

我有一个简单的 crontab 条目,它应该停止服务,但它不起作用。

* * * * * systemctl stop nginx
Run Code Online (Sandbox Code Playgroud)

我什至试过:

* * * * * /bin/systemctl stop nginx
Run Code Online (Sandbox Code Playgroud)

因为那不是命令显示的 systemctl 的位置。

该行适用于 root 用户,但不适用于 root 的 crontab。

不工作,我的意思是服务没有关闭。我可以确认服务器仍在运行并且 systemctl status nginx 显示它处于活动状态。

我究竟做错了什么?

linux debian cron systemd

2
推荐指数
1
解决办法
4520
查看次数

无法启用单元:文件 foo.service:错误消息

我有一个简单的单元文件:

[Unit
Description=do magic foo

[Service]
Type=simple
ExecStart=/usr/bin/foo
Restart=always
RestartSec=5s


[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)

如果我尝试启用它,我会收到以下消息:

root@server# systemctl enable foo
Failed to enable unit: File foo.service: Bad message
Run Code Online (Sandbox Code Playgroud)

怎么了?

systemd

2
推荐指数
1
解决办法
1万
查看次数

在 Debian 10 Buster 中创建自定义 /etc/init.d 脚本

我需要开发一个/etc/init.d脚本来启动和停止 Debian 10 Buster 中的服务器(二进制可执行文件)。而在 Debian 的早期版本中,您将编写一个完整的 shell 脚本来发出对 的调用'start-stop-daemon',而在最近的版本中,这些机制似乎已经被抽象掉了。手册页'init-d-script'提供了一个简单的脚本,该脚本将根据设置单个变量来启动和停止服务器'DAEMON'

但是,我需要在服务器启动后通过将锁定文件写入磁盘来进行自定义,更改当前工作目录并将自定义参数传递给服务器。

手册页指的是开发覆盖函数,例如'do_start_override''do_stop_override'可能会被调用而不是默认函数。我应该如何编写覆盖函数?我应该'do_start_cmd()'从中复制和粘贴函数'/lib/init/init-d-script'并修改它吗?或者我应该调用'start_daemon()'中定义的函数'/lib/lsb/init-functions'

debian lsb init.d systemd debian-buster

2
推荐指数
1
解决办法
5561
查看次数

如果服务未运行,我如何“启动”,但如果服务正在使用 systemd 运行,我如何“重新加载”?

我有部署(capistrano),成功后会重新加载 systemd:

sudo systemctl reload myserver.service
Run Code Online (Sandbox Code Playgroud)

但是,在第一次部署之后,该服务尚未运行。在这种情况下,我想改为启动它。

sudo systemctl start myserver.service
Run Code Online (Sandbox Code Playgroud)

systemd 中是否有一个标志或其他技巧可以确定:“服务是否正在运行,然后重新加载,否则启动它”?另一种方法是将其构建到部署工具本身中,但如果 systemd 提供这些功能,我宁愿使用现有功能。

systemd

2
推荐指数
1
解决办法
667
查看次数

Redis 服务挂起 systemctl 和 Type=notify

我遵循了这个答案:https : //serverfault.com/a/893075/210494。我有 CentOS 7.8。

Redis服务

[Service]
Type=notify
ExecStart=/opt/redis/bin/redis-server /opt/redis/conf/redis-master.conf
TimeoutStartSec=60
TimeoutStopSec=60
TimeOutSec=90
RestartSec=5s
Restart=on-success
Run Code Online (Sandbox Code Playgroud)

redis-master.conf

daemonize no
supervised systemd
Run Code Online (Sandbox Code Playgroud)

当我运行此服务时,Redis 进程启动但systemctl挂起,我必须按 Ctrl-C 才能返回 shell。

这是在日志中:

69486:C 28 Aug 2020 17:31:14.545 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=69486, just started
69486:C 28 Aug 2020 17:31:14.545 # Configuration loaded
69486:C 28 Aug 2020 17:31:14.545 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit.
69486:M 28 Aug 2020 …
Run Code Online (Sandbox Code Playgroud)

redis systemd centos7

2
推荐指数
1
解决办法
2382
查看次数

如何通过 CLI 在 Ubuntu 20.04 (systemd) 上禁用挂起

我有一台安装了 ubuntu 20.04 的笔记本电脑,用作服务器。因此我希望它永远不会暂停。

默认情况下,当盖子关闭时它会自动暂停。

因为我只能通过 ssh 访问它(并且没有安装 X),所以我需要通过 CLI 禁用它。

多个站点建议使用

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

这确实阻止笔记本电脑在盖子关闭时暂停,但导致 systemd-logind 消耗 100% cpu 并连续记录以下内容:(每秒多次)

 systemd-logind[514]: Suspending...
 systemd-logind[514]: Unit suspend.target is masked, refusing operation.
 systemd-logind[514]: Failed to execute suspend operation: Permission denied
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何正确禁用暂停?

ubuntu suspend systemd

2
推荐指数
1
解决办法
1679
查看次数

Systemd 停止用户管理器并终止所有用户进程

我有许多 podman 容器在一个用户下运行。其中运行的进程有时是资源密集型的(CPU 和内存)。

直到最近我们还没有遇到任何问题。但是,在对容器内运行的程序之一进行不可避免的软件更新之后,容器每天都会同时死亡。我将可用内存增加了一倍,这暂时有所帮助,但问题又回来了。

我在 中发现以下几行/var/log/syslog,总是在关闭之前出现:

Jul 24 17:01:26 xxx1 systemd[1]: session-5.scope: Deactivated successfully.
Jul 24 17:01:26 xxx1 systemd[1]: session-5.scope: Consumed 9.924s CPU time.
Jul 24 17:01:36 xxx1 systemd[1]: Stopping User Manager for UID 1000...
Run Code Online (Sandbox Code Playgroud)

在此之前不久,CPU 使用率出现峰值,因为容器始终同时执行计划任务。

我没有更改原始版本(Ubuntu 22.04LTS)的任何 systemd 设置。并在中/etc/systemd/system.conf设置DefaultCPUAccounting为否。

我怀疑可能存在一些其他限制导致关闭(例如:任务数量),但我在日志中找不到任何有关促使用户管理器停止的信息。

如何查找停止原因?

systemd

2
推荐指数
1
解决办法
1841
查看次数

如何找到 systemd 服务无法启动的确切原因(服务的单元文件设置错误)?

这真的很烦人,systemd只回应我的服务文件配置错误,但没有具体指出错误在哪里:

\n

/lib/systemd/system/auto_pgha.service:

\n
[Unit]\nDescription=PostgreSQL High Availability\nAfter=network.service\nAfter=firewalld.service\n\n\n[Service]\nType=simple\nWorkingDirectory=/etc/repmgr\nExecStartPre=/bin/bash -c 'echo -e "\\n"  `date +"%Y/%m/%d %a, %X"`": STARTING \\n"  >> pgha.log'\nExecStart=/bin/bash -c "python3 pg_high_availability.py  &>> pgha.log"\nRestart=always\nRestartSec=3\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n

在目录内/etc/repmgr这两个命令运行得很好。但 systemd 服务只是响应了一个错误:

\n
# systemctl start auto_pgha\nFailed to start auto_pgha.service: Unit auto_pgha.service has a bad unit file setting.\nSee system logs and 'systemctl status auto_pgha.service' for details.\n\n# systemctl status -l auto_pgha\n\xe2\x97\x8b auto_pgha.service - PostgreSQL High Availability\n     Loaded: bad-setting (Reason: Unit auto_pgha.service has a bad unit file setting.)\n......\nauto_pgha.service: Unit configuration has …
Run Code Online (Sandbox Code Playgroud)

systemd systemd-service

2
推荐指数
1
解决办法
2807
查看次数

来自 bash 的便携式守护进程管理(sysvinit/upstart/systemd)

我有一个需要停止服务的小 shell 脚本。这需要在 ubuntu (14.04)、debian 和 Arch 上工作。现在我所做的类似于

   case $(cat /etc/issue) 在 
     *Ubuntu*)
       服务命令
     *Debian*)
       /etc/init.d/servicename 命令
     *拱*)
       systemctl 服务命令
   esac

有没有更好的方法来做到这一点?

bash upstart init.d systemd

1
推荐指数
1
解决办法
319
查看次数