Articles of systemd

在CentOS上使用systemd-journal 219的CPU使用率较高

systemd-journal似乎具有较高的CPU使用率,与节点上的实际服务HAProxy相比: 385 root 20 0 69948 26152 25776 S 3.0 0.2 0:04.05 systemd-journal 22509 haproxy 20 0 58264 7256 1812 S 1.3 0.0 0:00.45 haproxy 中央处理器: vendor_id : GenuineIntel cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz stepping : 2 microcode : 0x25 cpu MHz : […]

服务器启动时的Centos备份

我写了bash脚本 ,在系统启动时从远程文件夹中备份一些文件。 所以在系统启动时,它将单元文件中的远程共享: [Unit] Description=CIFS Share from spr1-backup01 After=network-online.target [Mount] What=//192.168.18.12/oracle_backup Where=/mnt/smb Type=cifs Options=ro,vers=2.1,credentials=/root/creds/.cred_oralocalsys [Install] WantedBy=multi-user.target 之后备份单元启动(/root/nas/sender.sh是我的备份脚本) [Unit] Description=Backup oracle database After=mnt-smb.mount [Service] Type=simple ExecStart=/root/nas/sender.sh StandardOutput=journal [Install] WantedBy=multi-user.target Probles是如果启动时自动启动 – 它跳过实际的备份过程(我的意思是前面提到的bash脚本中的rsync部分)。 如果我手动运行这个脚本 – 一切都会很好,按预期工作。 任何想法为什么发生这种情况

在Ubuntu 16.04 GNOME上使用systemd的x11vnc

我有麻烦启动Ubuntu的服务器上的16.04 Gnome x11vnc服务。 它在14.04以前工作得很好。 不知道是否与x11vnc本身或systemd有关。 这是systemd服务文件: [Unit] Description=Start x11vnc at startup. After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared -o /var/log/x11vnc.log [Install] WantedBy=multi-user.target /etc/x11vnc.pass存在,并使用x11vnc -storepasswd /etc/x11vnc.passwd 重新启动后,x11vnc启动,但没有运气与vnc连接,x11vnc.log文件说: 03/05/2017 16:12:19 passing arg to libvncserver: -rfbauth 03/05/2017 16:12:19 passing arg to libvncserver: /etc/x11vnc.pass 03/05/2017 16:12:19 passing arg to libvncserver: -rfbport […]

用户会话不会结束

我最近注意到,在我所有的主机上都开了大约60个会话 。 ( loginctl list-sessions ) 显示这些会话来自Zabbix Monitoring的详细信息, Zabbix Monitoring定期运行一些脚本来生成统计信息。 我可以用loginctl terminate-session来销毁它们。 24小时后,已经有一些会议了。 然后我开始监视这些会话。 看到这张图: 会议详情: loginctl show-session c96339 Id=c96339 User=0 Name=root Timestamp=Thu 2017-05-04 03:38:28 CEST TimestampMonotonic=2551128480813 VTNr=0 Remote=no RemoteUser=zabbix Service=sudo Scope=session-c96339.scope Leader=14070 Audit=0 Type=unspecified Class=background Active=yes State=closing IdleHint=no IdleSinceHint=0 IdleSinceHintMonotonic=0 有时,服务器变得非常慢, 平均负载超过40 。 我必须重新启动systemd-logind服务。 之后,一切都好了。 有没有人有一个想法,为什么我必须定期重新启动服务,为什么会议不会自动销毁? 系统: Fedora 24(x86_64) 内核:4.9.12-100.fc24.x86_64 Zabbix Agent:zabbix-agent-3.0.7-1.fc24.x86_64 Systemd:systemd-229-18.fc24.x86_64

如何使用systemd设置unix socket积压?

我有一个nginx和一个fastcgi后端的问题。 我试图增加积压的大小,但它似乎没有工作。 我究竟做错了什么? 后端是通过systemd启动的。 操作系统:16.04.2 LTS(Xenial Xerus) # /etc/systemd/system/backend.socket [Socket] Backlog=1000 ListenStream=/tmp/backend.socket # ss -l|grep back u_str LISTEN 0 128 /tmp/backend.socket 21641 * 0 # nginx log 2017/06/21 09:40:56 [error] 1565#1565: *33729 connect() to unix:/tmp/backend.socket failed (11: Resource temporarily unavailable) while connecting to upstream, upstream: "fastcgi://unix:/tmp/backend.socket:" $ cat /proc/sys/net/core/somaxconn 1024

Python脚本仅在作为服务运行时才会失败

我有一个我写的python脚本。 当我运行./myscript.py并且没有错误时,它完全按照预期工作,继续工作几天,直到我手动closures。 我还创build了一个为我的python脚本编写的SystemD服务。 但是,在运行服务时,会在每一轮中途出错。 SystemD重新启动脚本,它完美的工作1轮和一半的错误。 这是来自journalctl -xe -f的错误: Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Start operation timed out. Terminating. Jul 05 16:04:35 glas-dev magewelk.py[9685]: Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Main process exited, code=dumped, status=3/QUIT Jul 05 16:04:35 glas-dev systemd[1]: Failed to start Data collector Magewell to Elasticsearch. — Subject: Unit magewelk.service has failed — […]

允许单个以太网端口上的ssh访问

我是那个问复杂问题的人,没有看到简单的答案。 为了快速解释,我有一堆服务器(在debian 9上),有2个物理networking接口,一个前端(用于应用程序)和一个后端(用于pipe理目的)。 因为我想locking一切,我决定拒绝ssh从前端界面访问服务器,而对于“其他”的原因,不能只是阻止端口22.复杂的部分是,我不能只是把ip地址在sshd config(ListenAddress)中的服务器后端networking,因为ip是dynamic的。 我没有在网上find任何东西只是说ssh“只使用该接口”,所以现在我做了一个脏的修复sshd服务的systemd启动,看起来像这样: [Unit] Description=OpenBSD Secure Shell server After=network.target auditd.service ConditionPathExists=!/etc/ssh/sshd_not_to_be_run [Service] EnvironmentFile=-/etc/default/ssh ExecStartPre=AdmNetIp=$(echo `ifconfig eth1 2>/dev/null|awk '/inet / {print $2}'`); sed -i "s/\(^#\)\{0,1\}ListenAddress .*/ListenAddress $AdmNetIp/" /etc/ssh/sshd_config ExecStart=/usr/sbin/sshd -D $SSHD_OPTS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartPreventExitStatus=255 Type=notify [Install] WantedBy=multi-user.target Alias=sshd.service ExecStartPre的重要组成部分。 它基本上用sshd启动之前的eth1接口的实际ipreplacesshd config中的ip。 我真的不喜欢那个,想知道是否有一个“更清洁”的方式。 我什么都不知道,用我的玩具来操作,所以如果这很愚蠢的话,我很抱歉失去了时间。 我更像是一个pipe理员,也是一个法国人,对于你stream血的眼睛感到抱歉。 谢谢阅读 !

Linux简单的方法来提取每个设备的MAC地址

我正在处理post-systemd crapstorm设备被重命名为eno1,2,3或有时重命名1,2,3。 我不运行systemd作为init系统,但不幸的是,udevd是systemd感染的垃圾,现在被破坏,所以join/etc/systemd/network/*.link文件不会有太大的好处。 我需要一个简单的方法来提取设备名称,例如eno1的mac地址。 这将是可能的: ip a ifconfig -a 但有没有一种更方便的方式,从proc文件系统获取这个信息? 所以无论接口被重命名,我总是可以将其重命名为eth0和eth1。 我也想在各种各样的服务器上运行这个发行版,所以这个检查列表必须可以通过设备MAC ID进行扩展。

将systemd托pipe服务环境中的机密(密码,密钥)导出的最佳做法是什么?

pipe理帐户凭证和SHA256机密并将其提供给systemd托pipe服务的最佳做法是什么? 在旧的init.d方式中,我只是在/ etc / default中安装一个脚本来源。 从那里我可以导入我想要的任何内容到环境variables中,然后可用于我的服务。 所以我的问题是,为系统pipe理服务提供loginID /密码凭证和其他“秘密”是什么被认为是“最佳做法”? 是通过一个被认为是“好”的环境,还是有一个更好的/更安全的方式? (即什么是最好的地方,把你的服务(如MySQL)的密码,SHA256秘密等,以及如何最有效地沟通那些长期运行的后台服务需要它?有没有比在环境中设置更好的pipe理方式系统启动进程之前?)

如何在systemd服务文件中使用variables?

我正在为一个守护进程创build一个服务文件,并且我想使用variables(在init脚本中,我使用了环境variables)来为执行的脚本定义一些参数。 例如,我想用2个参数$ PARAM1 $ PARAM2: [Unit] Description=my daemon After=network.target [Service] ExecStart=/usr/local/bin/daemon1 PIDFile=/var/run/daemon1.pid EnvironmentVariable=PARAM1=123 EnvironmentVariable=PARAM2=444 ExecStartPre=-/usr/bin/wget -O – –post-data=key1=$PARAM1&key2=$PARAM2 http://192.168.1.2/log.php ExecStopPost=-/usr/bin/wget -O – –post-data=key1=$PARAM1 http://192.168.1.2/log.php Type=simple [Install] WantedBy=multi-user.target 不用说,这个例子不起作用。 有没有类似systemd可以实现的东西? 什么样的exec命令的参数化是可能的?