我有一个当前的 Linux 系统,我想与 haproxy 一起使用。Journald 很乐意从 中记录 stdout .service,并将日志标记为来自该服务,但haproxy 似乎无法登录到 stdout。
让 haproxy 登录到 systemd/journald 的最简单、最干净的方法是什么?
编辑:当前配置是默认值:
global
log 127.0.0.1 local2
Run Code Online (Sandbox Code Playgroud)
但是没有local2设施,因为本地机器上没有系统日志。
当我使用 IPv6 连接到 CentOS 7 主机时<IPv6 host addr>%2,known_hosts即使该主机的主机密钥(带有主机的 IPv6 地址)已经存在于known_hosts.
代表什么%2?我使用的是 CentOS 7 中未经修改的 OpenSSH,版本 6.6.1p1-25,版本 25.el7_2。
更新:评论提到名称解析是一个可能的问题。事实上,我在客户端机器上使用 systemd-resolved。当我resolved从/etc/nsswitch.conf(hosts选项)中删除时,问题不再发生。这是与systemd-resolved-219-19.el7_2.7.x86_64)。
更新(2017 年 2 月):我刚刚注意到systemd 已解决的错误 4465,所以我注意到的行为是/只是一个错误,将在更高版本的 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) 我有一个 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) 我最近开始使用 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。谢谢。
我正在尝试在 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) 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服务。
基本上标题说明了一切,相当于
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)
但这并不能解决问题,联机帮助页没有提及这方面的任何内容。
我已经创建了脚本来控制 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) 当服务器过载时,systemd 下有什么方法可以给予 ssh 高优先级以确保远程 ssh 连接获得优先级以解决紧急情况?
systemd ×10
journald ×2
ssh ×2
systemctl ×2
containers ×1
daemon ×1
debian ×1
fedora ×1
git ×1
haproxy ×1
iproute2 ×1
ipv6 ×1
journal ×1
journalctl ×1
known-hosts ×1
logging ×1
networking ×1
packages ×1
ssh-keys ×1
ubuntu ×1
ubuntu-16.04 ×1
vacuum ×1