В этот ответ на SO я привел пример, который должен был использовать сигнал -SIGCONT в задании, отправленном в в. Однако я обнаружил, что процесс, который я остановил с помощью -SIGSTOP, не продолжился. Когда я изменил сигнал на числовое значение, это сработало.
echo "kill -18 $rspid"|at now + 2 minutes
Использовать числовое значение - плохая идея, поскольку оно может отличаться в разных системах.
Как я могу отправить это задание с символическим сигналом (-SIGCONT) вместо числового (-18)?
Я предполагаю, что любая оболочка, которую вы используете на работе, отличается от той, которую вы используете в командной строке, а оболочка at job не имеет встроенной функции kill, которая знает о символических сигнальных символах. Это распространено в Ubuntu, где для / bin / sh используется тире (по умолчанию используется at), а для интерактивных оболочек - / bin / bash.
Вы можете использовать двоичный файл kill, указав путь к нему:
echo "/bin/kill -CONT $rspid" | at now + 2 minutes
Или же укажите оболочку для явного выполнения:
echo "/bin/bash -c \"kill -CONT $rspid\"" |at now + 2 minutes
Я думал, что есть возможность указать, какую оболочку использовать, но сейчас я не могу найти упоминания об этом. Возможно, шебанг подойдет ...
Оказывается, тире любит сигналы в форме -CONT и не понимает стиль -SIGCONT. Поскольку bash понимает и то, и другое, возможно, будет более портативным использовать первое.
В моем тестировании не имело никакого значения, включил ли я явный путь к 'kill', но способ указания сигнала сделал.