Articles of systemd

系统单元:与命令:start(cloud-config)

我在CoreOS的cloud-config文件中configurationsystemd。 如果我正确理解这一点,我有两种启动单元的方法: 方法1,使用[Install] (如数字海洋指南中所述 ): – name: initialize_data content: | [Unit] Description=Run a command [Service] Type=oneshot ExecStart=/usr/bin/mkdir /foo [Install] WantedBy=multi-user.target 方法2,删除[Install] -section并使用command: start : – name: initialize_data command: start content: | [Unit] Description=Run a command [Service] Type=oneshot ExecStart=/usr/bin/mkdir /foo 是否有使用command: start单位的任何缺点command: start ? 我得到,我无法控制它将开始之后,但其他什么? 它会尊重[Unit]指令,如Requires=和After= ?

子设备上的cgroup节stream阀不起作用

我们在CentOS 7 (3.10.0-514.10.2.el7.x86_64)上运行带有devicemapper的Docker容器。 对于一些容器,通过指定父块设备,我们可以轻松地通过blkio.throttle.read_bps_device来限制读取,但是对于某些容器,它只是不起作用。 这是我们的lsblk : NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 32G 0 disk └─sda1 8:1 0 32G 0 part / sdb 8:16 0 100G 0 disk ├─data-docker_thin_tmeta 253:0 0 512M 0 lvm │ └─data-docker_thin 253:2 0 90G 0 lvm │ └─docker-8:1-151197496-c619…6ed 253:4 0 10G 0 dm ├─data-docker_thin_tdata 253:1 0 […]

CentOS 7上的GlassFish(systemd) – “asadmin restart-domain”无法正常工作

我在CentOS 7上使用了以下systemf脚本来处理GlassFish 4: [Unit] Description = GlassFish Server v4.1 After = syslog.target network.target [Service] User=glassfish ExecStart = /usr/bin/java -jar /home/glassfish/glassfish4/glassfish/lib/client/appserver-cli.jar start-domain ExecStop = /usr/bin/java -jar /home/glassfish/glassfish4/glassfish/lib/client/appserver-cli.jar stop-domain ExecReload = /usr/bin/java -jar /home/glassfish/glassfish4/glassfish/lib/client/appserver-cli.jar restart-domain Type = forking [Install] WantedBy = multi-user.target 当通过Web应用程序本身或通过NetBeans IDE或通过GlassFish Webpipe理页面执行命令“asadmin restart-domain”时,GlassFish的所有进程都被暂停,因此没有人能够重新启动GlassFish。 在具有原始GlassFish脚本(SysV)的CentOS 6中 – 一切正常。 任何想法如何解决? 编辑1: 1)重启失败后的进程状态 # systemctl status glassfish […]

Ubuntu服务器16.04在启动过程中停止

我已经将Ubuntu服务器从12升级到了14,然后升级到了16.它工作正常了几个月,但后来我不得不重新启动。 重新启动后,它不能成功启动。 我可以进入救援模式,但正常启动不工作/完成。 最后的消息是“确定达到目标套接字”。 和“启动名称服务器信息pipe理器…” 如果我使用Alt + F2 … F6,我得到一个空白屏幕,input不起作用,所以我不能login不同的terminal,并检查systemd服务的状态。 networking不上来,所以我也不能通过SSHlogin。 在救援模式下,我可以激活networking并手动启动sshd。 我已经检查了磁盘,一切似乎都没问题。 在/ var / log / syslog或/ var / log / messages中没有任何关联。 我不知道如何用systemddebugging启动过程。

systemd下的git-daemon:base-path不存在或不是目录

我试图使用git-daemon通过git propocol启用对我的托pipeGitLab服务器的访问。 如果我从命令行运行git-daemon,它按预期工作: $ /usr/libexec/git-core/git-daemon –export-all –base-path=/var/opt/gitlab/git-data/repositories –syslog –verbose $ git ls-remote git://localhost/cm/test_project.git 9cbff8accfa291ffeb8189f114c6d290a3856511 HEAD 2817d289674481ef02f05c3558063a5239d844b2 refs/heads/develop2 9cbff8accfa291ffeb8189f114c6d290a3856511 refs/heads/master bce85bd749a69cb127bdb0e64c173e926eb77cbc refs/heads/old-master $ 但是,如果我以systemd单元运行git-daemon ,我得到以下错误: $ git ls-remote git://localhost/cm/test_project.git fatal: read error: Connection reset by peer $ 并在日志中: git-daemon[19089]: base-path '/var/opt/gitlab/git-data/repositories' does not exist or is not a directory 我有以下设置: 混帐daemon.socket: $ cat /etc/systemd/system/git-daemon.socket [Unit] Description=Git […]

我怎样才能find失败的systemd服务?

当我在一台特定的服务器上运行systemd status时,我得到以下输出: ● ⟨host-name⟩ State: degraded Jobs: 0 queued Failed: 1 units Since: Fr 2017-06-09 00:34:27 UTC; 1 weeks 5 days ago CGroup: / … 如何找出哪些服务是失败的? 我尝试了systemctl is-failed '*' ,但没有产生任何有意义的输出(输出39行active一个failed行,然后一些更多(> 100) active行…)。

OpenVPN和systemd-resolved:DNS不parsingVPN内部名称

我使用OpenVPN在一些虚拟机上安装了VPN。 其中一个虚拟机正在运行dnsmasq,为networking内部提供一个基本的DNS。 我的客户正在运行Ubuntu,现在或多或less的强制systemd解决。 我发现,尽pipe它声称已经configuration了DNS,但是我实际上不能实现nslookup或挖掘VPN内的主机名。 我可以通过IP ping通他们,但不能通过名称。 让我们深入到configuration文件。 OpenVPN服务器conf: mode server local 192.168.50.101 port 1194 proto udp dev tun ca /etc/openvpn/server/ssl/ca.pem cert /etc/openvpn/server/ssl/cert.pem key /etc/openvpn/server/ssl/key.pem dh /etc/openvpn/server/ssl/dh2048.pem topology subnet server 10.99.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 10.10.0.0 255.255.255.0" push "dhcp-option DNS 10.99.0.1" keepalive 10 120 cipher AES-128-CBC # AES comp-lzo push "comp-lzo yes" user openvpn group […]

Systemd:作为服务运行时,Redis服务器无法启动 – 符号链接层次太多

我最近碰到这个问题。 我已经安装了Debian 9作为networking服务器(使用nginx,php7.0-fpm和其他一些东西),我想用我的PHP安装使用redis。 当从官方回购安装时,软件包安装正常,但systemd单元无法启动或启用。 当我尝试手动从单元文件的“ExecStart”运行命令时,redis开始正常工作。 这里是单元文件(由Debian软件包提供,我没有做任何修改): [Unit] Description=Advanced key-value store After=network.target Documentation=http://redis.io/documentation, man:redis-server(1) [Service] Type=forking ExecStart=/usr/bin/redis-server /etc/redis/redis.conf PIDFile=/var/run/redis/redis-server.pid TimeoutStopSec=0 User=redis Group=redis RunTimeDirectory=redis ExecStartPre=-/bin/run-parts –verbose /etc/redis/redis-server.pre-up.d ExecStartPost=-/bin/run-parts –verbose /etc/redis/redis-server.post-up.d ExecStop=-/bin/run-parts –verbose /etc/redis/redis-server.pre-down.d ExecStop=/bin/kill -s TERM $MAINPID ExecStopPost=-/bin/run-parts –verbose /etc/redis/redis-server.post-down.d UMask=007 PrivateTmp=yes LimitNOFILE=65535 PrivateDevices=yes ProtectHome=yes ReadOnlyDirectories=/ ReadWriteDirectories=-/var/lib/redis ReadWriteDirectories=-/var/log/redis ReadWriteDirectories=-/var/run/redis CapabilityBoundingSet=~CAP_SYS_PTRACE # redis-server writes its own config file […]

systemd状态更改为“取消激活(stop-sigterm)”for type = forking的单元

我写了一个systemd单元来启动我的应用程序: cat [email protected] [Unit] Description=Start my application After=local-fs.target network.target [Service] WorkingDirectory=/apps/scope ExecStart=/apps/scope/scripts/startAtBoot.sh Type=forking PIDFile=/apps/scope/scripts/startAtBoot.pid User=%i #Group= TimeoutSec=30min [Install] WantedBy=multi-user.target cat /apps/scope/scripts/startAtBoot.sh #!/bin/bash #### Description: Startup applications at system reboot #set -x (. ~/.bash_profile && /apps/scope/scripts/envMaint.sh start >> /apps/scope/ca/profile-root/runtime/logs/envMaint-`date +\%m\%d`.log 2>&1)& echo $! > /apps/scope/scripts/startAtBoot.pid 当我开始这项服务时: [root@alvd17p01 ~]# systemctl start [email protected] 我可以看到父母和孩子的stream程运行了一段时间。 [root@alvd17p01 ~]# systemctl status […]

获取systemd-journald(219)来侦听/ dev / log之外的其他地方

我想systemd-journald在systemd 219(在el7上,所以软件包是systemd-219-30.el7_3.9.x86_64)监听/run/systemd/journal/dev-log上的系统日志消息,并且让/dev/log成为该文件的符号链接 。 这是systemd-journald更新版本的默认行为。 股票/lib/systemd/system/sytemd-journald.socket看起来像这样: [Unit] Description=Journal Socket Documentation=man:systemd-journald.service(8) man:journald.conf(5) DefaultDependencies=no Before=sockets.target [Socket] ListenStream=/run/systemd/journal/stdout ListenDatagram=/run/systemd/journal/socket ListenDatagram=/dev/log SocketMode=0666 PassCredentials=yes PassSecurity=yes ReceiveBuffer=8M 我修改该文件以删除ListenDatagram=/dev/log行。 我创build了一个新的单元/etc/systemd/system/systemd-journal-dev-log.socket ,它看起来像: [Unit] Description=Journal Socket (/dev/log) Documentation=man:systemd-journald.service(8) man:journald.conf(5) DefaultDependencies=no Before=sockets.target IgnoreOnIsolate=yes [Socket] Service=systemd-journald.service ListenDatagram=/run/systemd/journal/dev-log Symlinks=/dev/log SocketMode=0666 PassCredentials=yes PassSecurity=yes ReceiveBuffer=8M SendBuffer=8M [Install] WantedBy=systemd-journald.service 我修改了/lib/systemd/system/systemd-journald.service以便它包括: Sockets=systemd-journald.socket systemd-journald-dev-log.socket 我重新加载systemd( systemctl daemon-reload ),启用新的套接字systemctl enable systemd-journald-dev-log.socket )并重新启动所有日志相关单元( systemctl restart […]