Questions tagged «systemd»

systemd是Linux的SystemV和Upstart初始化守护程序的替代方法。它旨在提供一个更好的框架来表达服务的依赖性,允许在系统启动时并行完成更多工作,并减少Shell开销。

2
systemd在Debian 8.0 Jessie启动时等待网络的时间太长
我的系统已经启动了比较快的,同时然Debian的7喘息,但之后升级到Debian的8杰西,因此从SysVinit到systemd,它成为一种方式,方法要慢。 减慢启动速度的是网络。等待网络接口的更新时间超过1分钟。我不知道其中的内容/etc/network/interfaces会影响启动过程,因此这里是整个过程。 / etc / network / interfaces: allow-auto lo iface lo inet loopback auto wlan0 iface wlan0 inet static address 192.168.150.1 netmask 255.255.255.0 auto eth1 iface eth1 inet manual up ifconfig $IFACE 0.0.0.0 up down ifconfig $IFACE down auto eth2 iface eth2 inet manual up ifconfig $IFACE 0.0.0.0 up …

2
在systemd服务文件中设置DISPLAY
我试图通过尝试将xclock作为服务来学习systemd服务;服务文件在下面 [Unit] Description=clock [Service] Environment=DISPLAY=:0 ExecStart=/usr/bin/xclock [Install] WantedBy=graphical.target 有什么主意吗?我收到一条错误消息:“无法连接到显示器”。

2
通过Debian打包有条件地启用系统文件
我创建了一个安装服务的Deb包。 在我们的嵌入式设备上,我希望此软件包自动启用该服务。在我们的开发人员工作站上,我希望开发人员systemctl start foo手动进行操作(这是一项繁重的服务,因此,如果始终在桌面环境中运行,它只会消耗资源)。 如何在apt-get步骤中提示用户做出他们的决定?那是最好的解决方案吗? 注意,我已经使用dh_make和创建了包,debhelper并通过以下方式启用了该包: %: dh $@ --with=systemd override_dh_systemd_enable: dh_systemd_enable --name=foo foo.service
8 systemd  dpkg 

2
systemd:尚不支持基于套接字的激活的按需启动服务,例如postgresql和mysql
在笔记本电脑上,我仅使用MySQL和PostgreSQL进行测试。在开始编程之前(在启动后可能需要几个小时),我不需要它们。但是手动启动服务并输入我的sudo密码是一个(小)麻烦。 我读到systemd仅在访问该服务的端口时才支持启动服务。但是Google快速搜索似乎表明PG&MySQL还不支持基于套接字的激活。 我知道我可以使用shell脚本破解此代码,也可以等待维护者修复服务,但是现在(出于教育目的)我正在寻找一种更好的方法。 问题:如何以一种利用系统功能或被推荐为Linux“最佳实践”的方式来实现此类服务的按需启动? 一些想法: 我可以安装一项服务来根据条件(例如正在运行的特定进程)来处理自动启动和自动停止服务吗? 是否存在由套接字激活并依次启动目标服务的代理服务? systemd 229,Kubuntu 16.04,MySQL 5.7,PostgreSQL 9.5 更新:答案: 我如何使用Siosm建议的systemd-socket-proxyd: /etc/mysql/mysql.conf.d/mysqld.cnf port = 13306 /etc/systemd/system/proxy-to-mysql.socket [Socket] ListenStream=0.0.0.0:3306 [Install] WantedBy=sockets.target /etc/systemd/system/proxy-to-mysql.service [Unit] Requires=mysql.service After=mysql.service [Service] # note: this path may vary ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:13306 PrivateTmp=no PrivateNetwork=no 根据需要重新加载/停止/启动: sudo systemctl daemon-reload sudo systemctl enable proxy-to-mysql.socket sudo systemctl start proxy-to-mysql.socket …

3
如何准备好已就绪的systemd服务标志,以便其他服务可以在启动之前等待其就绪?
我有一堆服务(例如C0,C1… C9),这些服务只能在一个服务S完成其初始化并完全运行并为其他服务做好准备后才能启动。如何用systemd安排呢? 在systemd中使用路径激活和目标订购服务中,假定服务S具有一种写出某种标记文件的机制。相反,在这里假设我对服务S运行的程序拥有完全控制权,并且可以在需要时向其中添加systemd机制。
8 systemd 

2
在systemd脚本中为true时运行
我得到了一个bash脚本,基本上运行了这个脚本: #!/bin/bash [...] while true; do str="broadcast "`randArrayElement "messages[@]"` server_send_message $str sleep $interval done 现在,我要将其作为systemd服务运行,我的服务脚本如下所示: [Unit] Description=Announcer After=network.target [Service] ExecStart=/usr/local/bin/somescript &; disown ExecStop=/usr/bin/kill -9 `cat /tmp/somescript.pid` Type=forking PIDFile=/tmp/somescript.pid [Install] WantedBy=default.target 不幸的是,当我通过service somescript start它运行该服务时,但是由于while true循环,我的终端无法启动脚本: ● somescript.service - somescript service Loaded: loaded (/etc/systemd/system/somescript.service; disabled; vendor preset: enabled) Active: activating (start) since …

1
系统用户无法获得用户组的能力
我在docker组中添加了一个非root用户,并在此非root用户连接到docker守护程序时运行了其他服务。但该服务无法正常工作。我为此做一个测试示例: root@# systemctl start docker.service root@# gpasswd -a tiger docker 在Tiger中创建系统服务: [Service] ExecStart=/home/tiger/connectdocker Restart=always StartLimitInterval=0 Delegate=true KillMode=process [Install] WantedBy=default.target 在/home/tiger/connectdocker这样的: docker run -itd busybox 2> connectdocker.log 启动此服务: tiger@# systemctl --user enable connectdocker.service tiger@# systemctl --user start connectdocker.service 结果: Thu Jul 21 00:59:15 CST 2016 Cannot connect to the Docker daemon. …

3
为什么systemd打印“循环太快”,该怎么办?
我正在使用Debian 8.3(jessie)运行服务器(VPS),systemd管理不同的进程。系统的负载低于1,但是它几乎使用了所有内存和部分交换空间。当我尝试停止服务并输入 systemctl stop process@1 日志文件说 Mar 1 08:03:50 abcde systemd[1]: Looping too fast. Throttling execution a little. 此消息每秒出现一次,什么也没有发生。当我发送^C到终端时,该过程终于停止了。当我尝试重新启动守护程序时,也会发生相同的情况。Systemd版本为:215-17 + deb8u3 为什么会出现此消息?如何在没有此消息的情况下关闭守护程序?
8 systemd  daemon 

1
如何在启动序列结束时暂停(或捕获)通过的消息?
在“启动序列” 1即将结束时,我看到一连串漫长的诊断消息飞速地飞过,就在我看到登录提示2之前。 AFAICT,构成这个短暂输出的大部分(如果不是全部)行都从下面显示的任一字符串开始 [ OK ] [FAILED] ...其中OK绿色FAILED为,红色为3。 这些消息闪烁太短,我无法阅读。 我的问题是: 有没有一种方法可以使这些消息更易于阅读? 我想到的可能解决方案包括(按优先顺序排列): 发球(或简单地重定向)这些消息逐字 4到一些持久日志文件; 启用分页类型机制(Press any key to continue...); 在打印这些消息后插入一个暂停(可配置的长度); 使某些键(或组合键)暂停输出到屏幕5。 编辑:根据我到目前为止的评论,我必须得出结论,即使我已尽我所能地强调,上述(1)中的逐字这个词还是不被理解或未被重视。如果可以的话,我会使其闪烁... EDIT2:meuh在评论中给出的建议对我来说很有希望,但是我还无法使它生效。这是我所做的: 首先,我在的末尾添加了以下内容/etc/rsyslog.conf: # Save boot messages also to boot.log local7.* /var/log/boot.log ...然后重新启动。我看到通常的诊断消息飞过,但是没有/var/log/boot.log创建文件。 然后,在/var/log/boot.log必须rsyslog写入之前已经存在的(极不可能的)事件中,我以root用户身份执行: touch /var/log/boot.log chgrp adm /var/log/boot.log chmod 640 /var/log/boot.log ... chgrp和chmod命令旨在使所有权和权限/var/log/boot.log与之下的所有其他日志文件的所有权和权限匹配/var/log。然后,我重新启动,看到了消息等。/var/log/boot.log此重新启动后,文件仍然为空。 (我得到了相同的非结果,当我改变的权限/var/log/boot.log来666。) 我想出的所有内容都grep输出到journalctl --boot或其中的文件下/var/log,这可能表示我的问题了rsyslog,但没有找到任何东西。(我对一点都不熟悉rsyslog,所以我确定搜索不力。) 显然,到目前为止,我所做的不足以启用所需的日志记录。我现在正在寻找我所缺少的东西。但是,我找不到太多相关的文档。例如,既不rsyslog.conf(5)也不rsyslogd(8)打算解释什么local7(rsyslog.conf(5)至少足够亲切地提及一次,而没有提供任何进一步的信息)。 编辑3 …

2
Symlink作为Systemd服务中的WorkingDirectory
我有WorkingDirectory=/srv/ctr/current一个符号链接服务。 重新启动后,该服务似乎未接收到符号链接中的更改。错误日志报告/srv/ctr/releases/69为位置,但/srv/ctr/current指向/srv/ctr/releases/72。有什么办法可以让systemd接管新的目录更改吗?

1
没有root特权的gnome如何重启?
我正在阅读《Linux内核开发》这本书,在第5章“系统调用实现”第77页中说 例如,capable(CAP_SYS_NICE)检查调用方是否具有修改其他进程的精确值的能力。默认情况下,超级用户拥有所有功能,而非超级用户则不拥有。例如,这是reboot()系统调用。请注意,第一步是如何确保调用过程具有CAP_SYS_REBOOT。如果删除了一条条件语句,则任何进程都可以重新引导系统。 但是,在我的Debian Sid中,我可以使用gnome或通过执行/ sbin / reboot来重启机器,而无需sudo或su。这怎么可能? 也许与systemctl? ls -l /sbin/reboot lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl 编辑:我的用户组 [damian@xvz:~]$ groups damian sudo wireshark bumblebee 编辑2:systemctl权限 [damian@xvz:~]$ ls -l /bin/systemctl -rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl

1
为什么我的系统日志在重新启动后无法持久保存?
我在Linode实例上使用新的Fedora 21映像遇到一个非常奇怪的问题。我无法在Linode之外复制它。问题是我的systemd日记在重新启动后不持久。根据文档: 默认情况下,日志将日志数据存储在/ run / log / journal /中。由于/ run /是易失性的,因此日志数据在重新引导时会丢失。为了使数据持久化,只需创建/ var / log / journal /,然后systemd-journald将在其中存储数据。 我检查了/ var / log / journal的存在,并且还在Storage=persistent/etc/systemd/journald.conf中进行了设置。日志目录包含一堆数据: $ du -sh /var/log/journal/ 89M /var/log/journal/ 但是,日志自上次系统重新启动以来仅包含日志条目: $ journalctl --list-boots 0 9f6a5a789dd64ec0b067140905e6da86 Thu 2015-03-19 15:08:48 GMT—Thu 2015-03-19 22:14:37 GMT 即使我journalctl --flush在重新启动之前,日志也会丢失。我怀疑这是Linode的Fedora 21映像的问题,我已经与他们一起打开了支持票。同时,我继续寻找导致此问题的原因。 我该如何调试?是什么原因造成的?我该怎么做才能解决此问题?

1
CentOS 7中的日志文件
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 在CentOS 7中,我如何找到并查看所有系统日志,这些日志告诉我谁试图进入系统,谁进入,他们联系了哪些流程,他们完成了哪些事情,等等。我希望能够将每个活动链接到其中一个用户ID或远程IP地址。 我的var/log/目录包含许多资源,包括/var/log/messages和/var/log/secure,但是大多数文件都是类型的Binary (application/octet-stream),除非我将一些未知的查看程序与它们关联,否则操作系统不知道如何打开它们。另外,var/log/firewalld似乎没有包含有用的信息。 我可以找到我的应用程序,数据库和NginX / Apache生成的所有日志。

2
将socat初始化脚本迁移到systemd
我在sysVinit的debian 7.2上将socat与以下init脚本一起使用。它完美地工作: #!/bin/bash DESC=socat DAEMON=/usr/bin/socat LIB=/usr/lib/socat SOCAT_ARGS="-d -d -lf /var/log/socat.log" [ ! -f /etc/default/socat.conf ] || . /etc/default/socat.conf . /lib/lsb/init-functions PATH=/bin:/usr/bin:/sbin:/usr/sbin [ -x $DAEMON ] || exit 0 # # Try to increase the # of filedescriptors we can open. # maxfds () { [ -n "$SOCAT_MAXFD" ] || return …

2
Arch不会在启动时挂载btrfs阵列
作为数据分区,我有一个多磁盘btrfs文件系统。我的根磁盘是ext4 Fstab: UUID=290624c6-6b95-41fd-94a1-923ebca64b83 / ext4 rw,relatime,data=ordered 0 1 /dev/sdc /mnt/btrfs btrfs rw,relatime,compress-force=zlib,autodefrag 0 0 当我启动机器时,它将等待1m30s并显示以下消息 A start job is running for dev-sdc.device 在那之后 Dependency failed for /mnt/btrfs 登录后我可以做 mount /mnt/btrfs systemctl default 它将起作用。系统将正常启动。 我首先虽然可能需要使用mkinitcpio挂钩来做一些事情,但是此页面显示: Arch的默认mkinitcpio软件包包含一个标准的btrfs挂钩,足以获取多设备(RAID)支持。除此之外,内核还可以引导单设备btrfs根目录而无需任何钩子 因此,一切都应该开箱即用。 为什么它不起作用,我应该怎么做才能解决它?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.