我在在线闪存卡中读到命令是:
pkill -u bob $(pgrep -u bob)
Run Code Online (Sandbox Code Playgroud)
然而,我认为这是错误的。我认为它在说:
杀死所有拥有的处理
bob,和4572\n4600
因为:
[bob@localhost ~]$ pgrep -u bob
4572
4600
Run Code Online (Sandbox Code Playgroud)
此外,它给出了一个错误:
[bob@localhost ~]$ pkill -u bob $(pgrep -u bob)
pkill: only one pattern can be provided
Try `pkill --help' for more information.
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为您不能在用户名中使用换行符,对吗?
我认为命令应该只是:
pkill -u bob
Run Code Online (Sandbox Code Playgroud)
“杀死鲍勃拥有的所有进程”
而命令:
pgreg -u bob
Run Code Online (Sandbox Code Playgroud)
给出“bob 拥有的所有进程”
我很好奇:
我需要杀死一些作为 sudo 运行的进程,按全名匹配它们,并计算原始命令调用的次数。
对于每个进程,有两个进程:命令本身和sudo一个,但我可以解决这个问题:
$ sudo -b perf record sleep 100
$ pgrep -fa '/perf record'
2245700 /usr/lib/linux-tools/.../perf record sleep 100
Run Code Online (Sandbox Code Playgroud)
问题是,当我调用时sudo pkill,它会找到、杀死并计算自己:
$ sudo pkill -ef '/perf record' | wc -l
2
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是否有一种简单的方法让 pkill 不包含自身?
我试过使用 pid 文件,这可能是可以接受的,但是缺少 pgrep/pkill 文档,而且它似乎不能以基本形式工作:
$ pgrep -f '/perf record' | tee /tmp/pids
$ sudo pkill -F /tmp/pids
killed (pid 2249211)
Run Code Online (Sandbox Code Playgroud)
因为它只会杀死第一个。文档说:
-F, --pidfile file
Read PID's from file. This option is perhaps more useful for pkill than pgrep.
Run Code Online (Sandbox Code Playgroud)
但它的含义是模棱两可的 …
我正在使用终端模拟器运行 Ubuntu 16.04。
我有两个脚本:a.sh和b.sh.?
a.sh调用b.sh。
a.sh
echo "a is running"
sleep 5s
bash b.sh
sleep 5s
echo "a is still running"
Run Code Online (Sandbox Code Playgroud)
b.sh
echo "b is now running"
sleep 1000s
echo "Bananas"
Run Code Online (Sandbox Code Playgroud)
有没有办法运行a.sh,b.sh在它完成之前停止(在它打印香蕉之前)并让a.sh运行完成并打印“a仍在运行”?
我试图把pkill -f b.sh里面a.sh,但两者a.sh并b.sh停止前a.sh完成。
kill $(< /sys/fs/cgroup/freezer/<name>/tasks )可以工作,但看起来很笨拙,如果 cgroup 为空,则会产生警告,并且可能会达到命令行长度限制。
pkill -F不接受 cgroup 任务文件作为有效的 pid 文件。
好像没有类似的专用工具cgkill。
我应该使用什么(除了像 LXC 这样的成熟容器之外)来使强制 cgroup 终止更加可靠和自记录?理想情况下,它还应该执行 { SIGTERM, then wait, then freeze, then SIGKILL, then thaw } 例程。
是的,我已经尝试了谷歌搜索的所有基本方法kill,等等。
有时它有效,有时似乎有什么东西阻止进程终止。
命令失败时没有任何消息,但、等显示进程仍在运行。pkillstderrkillpspgrep
有没有更有力的方法来做到这一点?谢谢。
我正在使用 Linux Ubuntu 20.04。
我有一个 PID 为 21 的进程:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs
Run Code Online (Sandbox Code Playgroud)
运行任何一个后
sudo pkill -9 21sudo kill 21该过程在top或的输出中仍然可见ps aux。
我怎样才能杀死它?
我研究了kill、pkill和killall命令,并且了解了它们的大部分差异。然而,我对他们的信号感到困惑:
如果我运行kill -l,我会看到:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) …Run Code Online (Sandbox Code Playgroud) 我找到了一种使用命令行注销任何用户的方法。通过执行命令pkill -KILL -u <username>,我现在可以从我进入的会话中注销。我的问题是,为什么在和 中都
没有关于-KILL可用开关或选项的描述。
我在用。预先非常感谢您。man pkillpkill --helpUbuntu Mate 16.04