标签: systemd

如何让 haproxy 登录到 systemd/journald?

我有一个当前的 Linux 系统,我想与 haproxy 一起使用。Journald 很乐意从 中记录 stdout .service,并将日志标记为来自该服务,但haproxy 似乎无法登录到 stdout

让 haproxy 登录到 systemd/journald 的最简单、最干净的方法是什么?

编辑:当前配置是默认值:

global
    log         127.0.0.1 local2
Run Code Online (Sandbox Code Playgroud)

但是没有local2设施,因为本地机器上没有系统日志。

logging haproxy systemd journald

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

OpenSSH 将 <IPv6>%2 添加到 known_hosts

当我使用 IPv6 连接到 CentOS 7 主机时<IPv6 host addr>%2known_hosts即使该主机的主机密钥(带有主机的 IPv6 地址)已经存在于known_hosts.

代表什么%2?我使用的是 CentOS 7 中未经修改的 OpenSSH,版本 6.6.1p1-25,版本 25.el7_2。

更新:评论提到名称解析是一个可能的问题。事实上,我在客户端机器上使用 systemd-resolved。当我resolved/etc/nsswitch.confhosts选项)中删除时,问题不再发生。这是与systemd-resolved-219-19.el7_2.7.x86_64)。

更新(2017 年 2 月):我刚刚注意到systemd 已解决的错误 4465,所以我注意到的行为是/只是一个错误,将在更高版本的 systemd 中修复。

ssh ipv6 known-hosts ssh-keys systemd

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

在 Ubuntu 16.04 上使用 systemd 截断/丢失日志

我正在使用 Ubuntu 16.04 服务器,创建了一个基本的 nodejs 脚本并将其打包在一个简单的 systemd 服务中。

api.service 的内容/lib/systemd/system/api.service

[Unit]
Description=api
After=network.target

[Service]
WorkingDirectory=/var/node/api
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5s
StartLimitInterval=60s
StartLimitBurst=5

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

当我用 看日志时journalctl -u api.service -n -f,似乎我的一些脚本输出行没有被记录,特别是当脚本在短时间内产生大量日志行时。

例如,如果 nodejs 脚本只是一个简单的 for 循环,输出前 3000 个整数,那么日志中似乎只记录了大约 2500 行。

index.js 的内容在/var/node/api/index.js

for (var i = 1; i <= 3000; i++) {
    console.log(i);
}
console.log("end of script");
Run Code Online (Sandbox Code Playgroud)

查看日志时journalctl -u api.service -n -f,我只得到大约 2500 行:

May 04 13:52:15 test systemd[1]: Stopping api...
May 04 13:52:15 …
Run Code Online (Sandbox Code Playgroud)

ubuntu systemd systemctl journald journalctl

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

在 debian systemd 包中找不到 systemd-machined

我有一个 docker 容器,运行非常裸的 debian 版本。有了这个,我必须先在外部安装 systemd。为此,我有一个运行安装的 docker 容器,然后将其提交到一个映像,然后从该映像运行 systemd。当我 bash 进入容器时,在文件系统的任何地方都找不到 machinectl,并且 machined 似乎没有运行。我需要安装特定的软件包吗?或者由于我一开始就在容器中,是否无法进行机加工?我承认容器中的容器是不受欢迎的,但这个容器的目的是运行与 systemd-machined 接口的测试。

重现步骤:

docker run --privileged --cidfile=/tmp/cidfile debian:stretch bash -c 'apt-get update && apt-get install -y build-essential git dbus libsystemd-dev libpam-systemd'
docker commit `cat /tmp/cidfile` deb-machined-test
rm /tmp/cidfile
docker run -d --cidfile=/tmp/cidfile --privileged deb-machined-test /bin/systemd --system
Run Code Online (Sandbox Code Playgroud)

debian packages containers systemd

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

journalctl 真空不工作

我最近开始使用 Fedora 25,我正在尝试手动清除日志,但它不起作用。例如:

$ journalctl --disk-usage
Archived and active journals take up 24.0M on disk.
Run Code Online (Sandbox Code Playgroud)

我尝试清除:

$ journalctl --vacuum-size=1M
Vacuuming done, freed 0B of archived journals on disk.
Run Code Online (Sandbox Code Playgroud)

它没有释放任何东西。有任何想法吗?系统是全新安装的,我还没有接触过journald.conf。谢谢。

fedora vacuum journal systemd

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

在 systemd 服务脚本中创建 PID 文件时遇到问题

我正在尝试在 Debian 上安装 RipRight,但似乎没有任何预先构建的软件包。我很难让 systemd 脚本开始/停止 RipRight 作为守护程序运行,因为它无法将 PID 文件写入/run.

我经历了通常的配置/制作/制作安装。我还创建了一个ripright用户/组并添加ripright到该cdrom组中。

这是我放入的 systemd 脚本/etc/systemd/system/ripright.service

[Unit]
Description=RipRight

[Service]
Type=forking
PrivateTmp=yes
User=ripright
Group=ripright

RuntimeDirectory=ripright
RuntimeDirectoryMode=0750

ExecStart=/usr/local/bin/ripright \
    --daemon \
    --w32-filenames \
    --require-art \
    --folder-art folder.png \
    --output-file "%B/%D/%C - %N %T.flac" \
    "/opt/ripright/data"
PIDFile=/var/run/ripright/ripright.pid

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

RuntimeDirectory在脚本中使用了最近添加的指令来创建一个作为所有者的/run/ripright文件夹ripright。这个目录在我运行时被创建:

# systemctl daemon-reload
# systemctl start ripright
Run Code Online (Sandbox Code Playgroud)

在单独的窗口中:

# ls -lhrt /run
...
drwxr-x---  2 ripright ripright   40 Jan …
Run Code Online (Sandbox Code Playgroud)

systemd systemctl debian-jessie

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

Systemd 未启动服务后

letsencrypt.service

[Unit]
Description=Renews letsencrypt certificates
After=network.target letsencrypt_concat_fullchain_privkey.service

[Service]
Type=oneshot
WorkingDirectory=/etc/letsencrypt/
ExecStart=/usr/bin/letsencrypt renew
Run Code Online (Sandbox Code Playgroud)

当我手动启动此服务时:sudo systemctl start letsencrypt它似乎没有启动该letsencrypt_concat_fullchain_privkey.service服务。我已经跑了sudo systemctl start letsencrypt_concat_fullchain_privkey.service,它可以正常工作。

我想要做的是当letsencrypt.service完成时我希望它启动letsencrypt_concat_fullchain_privkey.service服务。

systemd ubuntu-16.04

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

systemd-networkd 相当于“ip 规则添加...”

基本上标题说明了一切,相当于

ip rule add from 10.10.0.10/32 table 2
ip rule add to 10.10.0.10/32 table 2
Run Code Online (Sandbox Code Playgroud)

在 systemd-networkd 中?

我试图设置类似

[Route]
Destination 10.10.0.10/32
Table=2
Run Code Online (Sandbox Code Playgroud)

但这并不能解决问题,联机帮助页没有提及这方面的任何内容。

networking iproute2 systemd

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

如何在启动时启动 git-daemon?

我已经创建了脚本来控制 Fedora28 上 git-daemon 的启动、停止等。我现在试图将这些脚本链接到 systemd 服务,以便 git-daemon 在重启后可用。

主脚本 (gitT) 是...

#!/bin/bash
case "$1" in
  'start')
    echo "Starting git-daemon"
    /home/git/scripts/start.sh >> /home/git/gitT.log
    ;;
  'stop')
    echo "Stopping git-daemon"
    /home/git/scripts/stop.sh >> /home/git/gitT.log
    ;;
  'restart')
    echo "Bouncing git-daemon"
    /home/git/scripts/bounce.sh >> /home/git/gitT.log
    ;;
  'status')
    echo "Status of git-daemon"
    /home/git/scripts/status.sh
    ;;
  *)
    echo "`basename $0`: usage: `basename $0` { stop | start | restart | status }"
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

辅助脚本是...

启动文件

#!/bin/bash
# --------------------------
echo "---------------------"
/usr/bin/git daemon --export-all --enable=receive-pack --verbose --pid-file=/home/git/git-daemon.pid --base-path=/home/git/repos >> …
Run Code Online (Sandbox Code Playgroud)

daemon git start-stop-daemon systemd

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

sshd如何配置高CPU优先级

当服务器过载时,systemd 下有什么方法可以给予 ssh 高优先级以确保远程 ssh 连接获得优先级以解决紧急情况?

ssh systemd

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