Yves Dorfsman Asked: 2019-07-07 07:23:29 +0800 CST2019-07-07 07:23:29 +0800 CST 2019-07-07 07:23:29 +0800 CST 如何从终端执行程序,将 stdout 和 stderr 重定向到 systemd 的日志? 772 有没有一种简单的方法可以从终端运行命令,就像从 GNOME 的 Alt + F2 运行命令一样,将 stdout 和 stderr 重定向到 systemd 的日志? 我已经尝试过 gmrun(不重定向输出)、gtk-launch(仅适用于 /usr/share/applications 中的 .desktop 文件)。 是否有 GNOME 或 systemd 命令来执行此操作? systemd gnome 2 个回答 Voted mosvy 2019-07-07T09:17:48+08:002019-07-07T09:17:48+08:00 我认为您应该使用该logger(1)实用程序,无论您的系统使用的是systemd还是rsyslogd. your_prog 2>&1 | logger -t your_prog 在带有 systemd 的系统上,还有systemd-cat一个专门使用 systemd 的“流式”日志记录 api ( sd_journal_stream_fd(3), /run/systemd/journal/stdout) 而不是标准的syslog(3): your_prog 2>&1 | systemd-cat -t your_prog systemd-cat -t your_prog your_prog 保存另一个搜索:如果您只想通过管道传输标准错误而不是标准输出,您可以使用 log_stderr(){ { "$@" 2>&1 >&3 3>&- | logger -t "$1"; } 3>&1; } log_stderr your_prog Best Answer sourcejedi 2019-07-07T09:25:40+08:002019-07-07T09:25:40+08:00 systemd-run --user ... 不幸的是,默认情况下不使用最用户友好的模式。 默认情况下,使用systemd-run默认simple类型创建的服务 [...] 考虑使用exec服务类型 (ie --property=Type=exec) 以确保systemd-run仅当指定的命令行已成功启动时才成功返回。 这个更有用的设置是后来添加的。就个人而言,我不认为我会记住这个细节。所以我更喜欢使用简短的包装脚本。
我认为您应该使用该
logger(1)
实用程序,无论您的系统使用的是systemd
还是rsyslogd
.在带有 systemd 的系统上,还有
systemd-cat
一个专门使用 systemd 的“流式”日志记录 api (sd_journal_stream_fd(3)
,/run/systemd/journal/stdout
) 而不是标准的syslog(3)
:保存另一个搜索:如果您只想通过管道传输标准错误而不是标准输出,您可以使用
systemd-run --user ...
不幸的是,默认情况下不使用最用户友好的模式。
这个更有用的设置是后来添加的。就个人而言,我不认为我会记住这个细节。所以我更喜欢使用简短的包装脚本。