Выполнение команды при запуске

Выполнение команды при запуске

Недавно я наткнулся на "напоминать" в Linux. Мне это понравилось почти сразу, но для того, чтобы мои напоминания появлялись, мне нужно было запустить 'remind' в режиме демона. Делается это довольно просто с помощью следующей команды:

remind -z -k'gmessage %s &' /home/googie/.reminders &

Было бы глупо вручную запускать демон 'remind' каждый раз при загрузке компьютера (кто-то должен был бы напомнить мне об этом!), поэтому я подумал, что заставлю его автоматически запускаться при загрузке. Я был под впечатлением, что это будет довольно просто сделать, но меня ждал сюрприз.

Я сделал следующее (именно в такой последовательности):

  1. Создал скрипт (с вариантами запуска, остановки и перезапуска), поместил его в /etc/init.d, запустил «update-rc.d», чтобы создать несколько ссылок для определенных уровней запуска, перезапустил — безрезультатно
  2. Создал файл 'remind.conf', поместил его в /etc/init (ссылаясь на 'http://upstart.ubuntu.com/getting-started.html'), перезапустил --- все равно безуспешно
  3. Открыл «/etc/rc.local», поместил команду на запуск демона «remind» непосредственно перед «exit 0», перезапустил — все равно безрезультатно
  4. Открыл crontab (sudo crontab -e), написал «@reboot» и затем команду на запуск демона «remind» в последней строке, перезапустил — все равно безрезультатно
  5. Открыл «Система->Настройки->Автозагрузка приложений», добавил новую программу автозагрузки с командой для запуска демона «напомнить», перезапустил — все равно безрезультатно
  6. Создал скрипт в своем домашнем каталоге, поместил команду для запуска демона 'remind' внутри скрипта, вызвал этот скрипт из '/etc/rc.local', перезапустил --- все равно безрезультатно
  7. Вызвал скрипт в домашнем каталоге после '@reboot' в crontab, перезапустил --- все равно безрезультатно
  8. Вызвал скрипт в своем домашнем каталоге с помощью «Система->Настройки->Автозагрузка приложений» — наконец-то сработало, и демон «напоминания» теперь работает!!

Итак, теперь мои три вопроса:

  1. Неужели в Linux так сложно запустить что-либо при загрузке или это просто мой недостаток знаний?
  2. Было ли вообще целесообразно пробовать шаги 1 и 2? Я думаю, они используются для того, чтобы сделать что-то службой. Разве демон 'remind' тоже не является службой?
  3. Почему подход '/etc/rc.local' или 'crontab' не сработал? Есть ли какие-нибудь логи, которые я мог бы проверить, чтобы увидеть, что происходит не так?

(буду также признателен за любые ссылки, которые мне стоит почитать)

решение1

1) Боюсь, что последнее. Но не расстраивайтесь, большинство людей об это спотыкаются.

2+3) Единственные, которые могли бы работать, это 5 и 8. Скрипты запуска и cron не имеют представления о вашем сеансе входа, поэтому нет способа, которым они могли бы указать remindв gmessageправильном направлении. А 5 не сработал, потому что амперсанд в конце — это функция оболочки, а не команды. Вам, вероятно, он даже не нужен, если команда запускается как приложение запуска.

решение2

Эту строку можно поместить в скрипт запуска ~/.xinitrcлюбого рабочего стола X Window.

Связанный контент