【发布时间】:2016-01-25 18:02:20
【问题描述】:
在 bash 中,
pidof unison
将列出所有用户的统一进程。但是我只对在我的 uid 下启动的实例感兴趣。
我怎样才能做到这一点?
我想做什么: 我定期使用一致在多台机器上同步多个帐户。但是,如果当前用户手动启动了同步,我希望不开始同步。
【问题讨论】:
在 bash 中,
pidof unison
将列出所有用户的统一进程。但是我只对在我的 uid 下启动的实例感兴趣。
我怎样才能做到这一点?
我想做什么: 我定期使用一致在多台机器上同步多个帐户。但是,如果当前用户手动启动了同步,我希望不开始同步。
【问题讨论】:
你可以改用pgrep,比如
pgrep -u <userid> unison
这将返回具有给定用户 euid 的统一进程的 pid 列表。
【讨论】:
-x 参数强制精确 匹配pgrep。 (例如,pgrep -u ferd gvfsd 在我的系统上返回 9 个 PID,而pgrep -xu ferd gvfsd 只匹配一个。)这与默认执行精确匹配的pidof 不同。
您可以像这样解析ps 输出:
ps -ef | grep unison | grep -v grep | grep "${USER}" | awk '{print $2}'
【讨论】: