不工作我有一個看起來像這樣的文件:擊必殺的睡眠循環
#!/bin/bash
echo $$ > pid
while true; do
echo "something"
sleep 10s
done | lemonbar
我希望能夠有這樣的功能來殺死睡眠:
pkill -P $(cat pid) -f "sleep 10s"
如果我將睡眠移出循環,但上面的命令在循環中不起作用,則上述命令有效。我錯過了什麼?
不工作我有一個看起來像這樣的文件:擊必殺的睡眠循環
#!/bin/bash
echo $$ > pid
while true; do
echo "something"
sleep 10s
done | lemonbar
我希望能夠有這樣的功能來殺死睡眠:
pkill -P $(cat pid) -f "sleep 10s"
如果我將睡眠移出循環,但上面的命令在循環中不起作用,則上述命令有效。我錯過了什麼?
Bash循環啓動新的進程ID作爲一個孩子。 shell變量$ PPID應該代表父PID。然而,我也讀過你之前的問題,我認爲更好的問題是你真正想要完成什麼?所有這些聞起來都很詭異......
您確定了父pid,但您沒有告訴'pkill'要殺死哪個子進程。試試'pkill -P $(
alvits
@alvits我的不好。我實際上是用'pkill -P $(cat pid)sleep'運行它的。只是在帖子中忘了那部分。 – Marcel
請注意,您沒有使用'-f'。它告訴'pkill'匹配整個命令行,而不僅僅是進程名。 – alvits