Пример использования опции «x» команды «jobs» в bash

Если вы хотите иметь дело только с одним архивным файлом за раз, вы можете просто сохранить имя файла в переменной:

file=/var/tmp/backups/splunkbackup$(date '+%y-%m-%d').tar.gz
tar -zcf "$file" /opt/splunk/etc/
rsync -avz "$file" svc_splkbup@10.x.x.x:/...
rm "$file"

Хотя вы можете захотеть удалить файл только в случае успешной передачи, так что вместо этого:

rsync -avz "$file" svc_splkbup@10.x.x.x:/... &&
  rm "$file"
3
11.09.2020, 10:28
1 ответ

Пример:

$ sleep 300 &
[1] 16012
$ echo %1
%1
$ jobs -x echo %1
16012

Здесь %1— спецификация задания. Номер был взят из [1], показанного сразу после создания задания. Безjobs -x%1это просто строка, поэтому echo %1печатает строку. jobs -xзаменяет спецификацию задания на соответствующий идентификатор группы процессов перед запуском echo.

Если вы хотите что-то сделать с группой процессов, jobs -x— это способ подставить правильный идентификатор.

Мои тесты показывают, что если задание не существует, то %1останется буквальным, и команда все равно будет выполнена. Я не нашел способа заставить jobs -xвыйти из строя сам по себе в таком случае, поэтому я думаю, что команда (или весь скрипт )должны быть готовы как-то справиться с этим (, например. выйти из строя без причинения какого-либо ущерба ).

4
18.03.2021, 23:05

Теги

Похожие вопросы