我想暂停 YouTube,并尝试了最后一种方法这里使用kill -SIGSTOP [pid].
现在脚本在终端中运行良好,但使用键盘快捷键调用时不起作用。脚本:
#!/bin/sh
if [ -f /tmp/TimChromepid.RUN ]; then
mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
NMR=$(< /tmp/TimChromepid.PSD)
kill -SIGSTOP < /tmp/TimChromepid.PSD
else
NMR=$(< /tmp/TimChromepid.PSD)
mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
kill -SIGCONT $NMR
fi
我使用了变量'核磁共振'存储PID,因为当我直接将其输入时kill
出现此错误:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
据我测试,它似乎可以运行脚本和if
语句,但无法从文件中读取数字,也无法执行 kill
。
我该如何修复这个问题以及发生了什么?
答案1
我认为问题与脚本是通过键盘快捷键运行还是直接在终端中运行无关。这更像是分支中的错误if
,脚本会交替运行和失败。
在if
你写的分支中
kill -SIGSTOP < /tmp/TimChromepid.PSD
意思是:将文件内容通过管道传输/tmp/TimChromepid.PSD
到kill
标准输入. 但kill
没有读取任何内容标准输入,它只是接受 PID 作为命令行参数,而没有给出。这就是为什么它会告诉你它的用法。
要修复它,只需按照在else
分支中所做的那样进行操作,即替换kill -SIGSTOP < /tmp/TimChromepid.PSD
或kill -SIGSTOP $(< /tmp/TimChromepid.PSD)
使用$NMR
:
#!/bin/sh
if [ -f /tmp/TimChromepid.RUN ]; then
mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
NMR=$(< /tmp/TimChromepid.PSD)
kill -SIGSTOP $NMR
else
NMR=$(< /tmp/TimChromepid.PSD)
mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
kill -SIGCONT $NMR
fi