Я хотел приостановить 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
Я использовал переменный 'NMR' для хранения PID, поскольку, когда я подаю его непосредственно в kill
Я получаю эту ошибку:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Насколько я могу протестировать, кажется, что это может запустить скрипт, и if
- оператор, но это не может считать число из файла, и при этом это не может выполниться kill
.
Как я могу зафиксировать это и что продолжается?
Я не думаю, что проблема имеет некоторое отношение, запущен ли скрипт через сочетание клавиш или непосредственно в терминале. Это - скорее ошибка в Вашем if
перейдите и сценарий будет поочередно работать и перестанет работать.
В if
ответвление Вы записали
kill -SIGSTOP < /tmp/TimChromepid.PSD
что означает: передайте содержание по каналу файла /tmp/TimChromepid.PSD
в kill
stdin. Но kill
ничего не читает из stdin, он просто принимает 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