как правильно планировать задачу, которая планирует задачу с помощью «at» (atd)? или как правильно указывать / бежать в bash

Я ищу способ создать командную строку, используя «at» (atd), чтобы запланировать задачу, которая планирует задачу «делать больше» после перезагрузки (однократная задача). Я провел некоторое исследование в Интернете и нашел несколько различных решений для решения основной проблемы или задачи. То, что я ищу прямо сейчас, – это способ заставить его летать, просто соединяясь «по расписанию».

Моя проблема в том, что я как-то теряюсь при цитировании / побеге в bash. Надеюсь, я смогу получить совет или намек.

что я получил до сих пор и что работает на ручном исполнении:

echo "somecommand -someOptions 2>&1 | mail -s \"$HOST after reboot: somecommand -someOptions\" my.mail@address.com" | at now +5 minutes ;\ #do admin stuff before reboot in less than 5 mins here ;\ touch /fastboot ; reboot 

как уже упоминалось, работает отлично. Теперь я хотел бы инкапсулировать все это в ДРУГОЙ NEW 'AT' COMMAND, так что бывшая командная строка может быть назначена на определенное время запуска и больше не требует ручного выполнения.

Я знаю, что это должно звучать глупо, и я знаю, что есть способы решить это проще, быстрее и лучше, но это не вопрос моего вопроса. Я предполагаю, что должно быть возможно инкапсулировать / включить все это в другую команду «at», поэтому я хотел бы узнать, как правильно процитировать / убедить ее, чтобы она работала.

Я пробовал это (не работает):

 echo "echo \"somecommand -someOptions 2>&1 | mail -s \\"$HOST after reboot: somecommand -someOptions\\" my.mail@address.com\" | at now +5 minutes ;\ #do admin stuff before reboot in less than 5 mins here ;\ touch /fastboot ; reboot ; " | at now + 1 minute 

Я вижу, что он расписывает 2 задания, делает ли админ перед перезагрузкой и перезагрузкой, но второй (позже) на задании скремблируется / разбивается из-за плохого цитирования / экранирования, я думаю. Я хотел бы узнать и узнать больше о том, что происходит здесь, и где я ошибся в побеге. Наверное, я мог бы использовать одинарные кавычки на внешнем, потому что в этом случае мне не нужны переменные разложения, но давайте предположим, что я тоже хотел бы использовать расширение переменной. В таком случае, как я должен избегать / цитировать эту вещь правильно?

2 Solutions collect form web for “как правильно планировать задачу, которая планирует задачу с помощью «at» (atd)? или как правильно указывать / бежать в bash”

Вы забыли обратную косую черту с двойной цитатой, когда вы написали \\" который должен быть \\\" . Но вы можете избежать этого, используя цитату из третьего типа оболочки, здесь-документ:

 at now + 1 minute <<\! echo "somecommand -someOptions 2>&1 | mail -s \"$HOST after reboot: somecommand -someOptions\" my.mail@address.com" | at now +5 minutes #do admin stuff before reboot in less than 5 mins here touch /fastboot ; reboot ! 

Оберните то, что вы хотите сделать в скрипте ( bash , perl , …). Отлаживаем скрипт. Скажите at запуске скрипта .:

 at now + 5 /home/user/bin/doit ^D 
  • Попытка распечатать клавиши со стрелками вниз
  • Удаление всех файлов, начинающихся со скобок
  • Есть ли какие-либо объективные преимущества для escape-последовательностей по сравнению с tput?
  • Может кто-нибудь объяснить некоторые из этих кодов эвакуации?
  • Программно определить escape-код ANSI, поддерживаемый терминалом
  • Предоставление аргумента команде после замены
  • Терминальные escape-последовательности: почему терминалы не сообщают, какие функции они поддерживают, вместо того, чтобы полагаться на terminfo?
  • Как искать одиночные кавычки и двойные кавычки в поиске grep?
  • Как избежать метасимволов для egrep, как метакод из Perl?
  • Что делает опция escape-последовательности xterm и как ее включить?
  • Как печатать переменные и значения оболочки для их копирования и вставки?
  • Linux и Unix - лучшая ОС в мире.