我有一个非常简单的unix bash脚本,用于每秒执行一次命令。它具有以下形式:
while : ; do
cat /proc/`pidof iBrowser.bin`/smaps | awk -f ./myawkscript.awk >> $DIRPATH
sleep 1
done
脚本运行正常,但不会停止!如果我在脚本运行时点击ctrl-C,则进程不会停止,我收到以下错误:
cat:无法打开'/ proc // smaps':没有这样的文件或目录
有谁知道如何避免这种情况?
答案 0 :(得分:3)
要捕获ctrl-c,您需要定义一个处理程序,例如:
ctrl_c ()
{
# Handler for Control + C Trap
echo ""
echo "Control + C Caught..."
exit
}
然后声明您希望使用该处理程序捕获它:
trap ctrl_c SIGINT
您可以通过附加&amp ;,例如
在后台运行脚本$ ./your_script.sh &
在[方括号]中为您提供职位ID:
$ ./your_script.sh &
[1] 5183
(在这种情况下为1)。完成后,您可以使用
终止该过程$ kill %1
注意百分号表示您正在引用作业而不是进程ID
答案 1 :(得分:1)
awk -f ./myawkscript.awk /proc/`pidof iBrowser.bin`/smaps >> $DIRPATH \
|| exit 1
如果awk
调用失败,将退出脚本,这在pidof
由于错误路径而失败时发生。我冒昧地删除了你的UUOC。