我在学校从事“在Linux中创建任务管理器”项目。
我使用[1,4]
命令从ps命令获取cmd名称
如果使用此命令,则会看到部分结果:
>>> a=[[3,5],[5,3],[5,4],[0,2],[1,4],[1,2]]
>>> a.reverse()
>>> a.remove()
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: remove() takes exactly one argument (0 given)
>>> a.remove(5)
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: list.remove(x): x not in list
当我尝试使用每个进程的pid终止那些进程时,由于它们的PID不存在,它不会终止它们。
我怎么不显示那些ps -u [username] -o stat,cmd --sort=-pid | awk '{print $2$3$4}'
和awk{print$2$3$4}
ps-u[username]
?
我想不出任何主意
awk{print$2$3$4}
答案 0 :(得分:0)
您无法杀死它们,因为它们仅在命令运行时才处于活动状态,这与生成该输出所使用的命令相同。
有几种方法可以抑制这些。我认为最简单的方法是将其过滤到awk脚本中。:
ps -u [username] -o stat,cmd --sort=-pid | awk '$2!="awk" && $2!="ps"{print $2$3$4}'
答案 1 :(得分:0)
JNevill的解决方案排除了每个正在运行的awk
或ps
进程。我认为最好排除tty
上的进程。另外,您并没有获得有关如何使用awk
的完整命令。我(有点)使用sed
解决了这个问题。
$ ps -u $USER -o stat,tty,cmd --sort=-pid | grep -v `ps -h -o tty $$` | sed -r 's/.* (.*)$/\1/'
您可以使用以下命令对其进行测试。我在另一个终端上打开了man ps
。
$ ps -u $USER -o stat,tty,cmd --sort=-pid | grep -v `ps -h -o tty $$` | grep -E '(ps|grep)'
S+ pts/14 man ps
缺点是,除了排除ps
和grep
外,它还排除了您的应用程序。