有没有一种简单的方法可以从终端运行命令,就像从 GNOME 的 Alt + F2 运行命令一样,将 stdout 和 stderr 重定向到 systemd 的日志?
我尝试过 gmrun (不重定向输出)、gtk-launch (仅适用于 /usr/share/applications 中的 .desktop 文件)。
是否有 GNOME 或 systemd 命令可以执行此操作?
答案1
我认为您应该使用该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
要保存另一个搜索:如果您只想通过管道传输 stderr 而不是 stdout,则可以使用
log_stderr(){ { "$@" 2>&1 >&3 3>&- | logger -t "$1"; } 3>&1; }
log_stderr your_prog
答案2
不幸的是,默认情况下并未使用最用户友好的模式。
默认情况下,创建的服务
systemd-run
默认类型为simple
[...] 考虑使用exec
服务类型(即--property=Type=exec
)以确保systemd-run
仅当指定的命令行已成功启动时才成功返回。
这个更有用的设置是后来添加的。就我个人而言,我认为我不会记住这个细节。所以我更喜欢使用简短的包装脚本。