好的,所以我对以下代码有一个奇怪的问题:
who > tmp
cat tmp | awk '{print $1}' | sort | uniq > tmp
ps aux | grep -Fvf tmp
应该列出此时未登录的所有用户的进程。问题是它有时是有效的,有时却没有,我不知道是什么原因造成的。我可以输入完全相同的命令,我得到2个不同的结果。我已将问题缩小到第2行> tmp重定向,它保存正确的用户列表或完全擦除文件,我不知道为什么会发生。
PS。我知道这可能不适合完成任务,但这是我在有限的时间内提出来的。
答案 0 :(得分:1)
这可能是一个时间问题:您正在读取并截断同一管道中的文件。
简单的解决方案是根本不使用临时文件:
ps aux | grep -Fvf <(who | awk '{print $1}' | sort -u)