正如评论中提到的@Aserre,您需要在pkill
命令中使用双引号而不是单引号,以便在字符串中替换 shell 变量的值。
另外,请考虑默认pkill
发送SIGTERM
。因此,test.py
应该有一个信号处理程序在收到 SIGTERM 时关闭。如果test.py
没有信号处理程序,它将忽略信号并继续存在。如果是这种情况,请使用pkill -9
,这将杀死,ptest.py
因为信号 9 不能被忽略:
pkill -9 -f "test.py -s $symbol -folder $folder -n $name -d $name"
最后,我假设它test.py
作为守护进程运行或以某种方式在后台运行。否则,您的 bash 脚本将等到它退出后再继续。如果test.py
不是守护程序,您的 bash 脚本可以在后台运行它。这是一个例子:
#!/usr/bin/env bash
symbol=pi
folder=/tmp
name=john
$PWD/test.py -s $symbol -folder $folder -n $name -d $name &
pid=$!
echo "killer: started test.py ($pid)..."
sleep 5
echo "killer: killing test.py..."
# you may use -9 instead of -SIGTERM
pkill -SIGTERM -f "test.py -s $symbol -folder $folder -n $name -d $name"
wait $pid
echo "killer: test.py is dead; exiting..."