Запустите сценарий на системном запуске (Ubuntu 16.04.1)

В моей новой системе Ubuntu я пытался запуститься, сценарий Bash автоматически в системе запускают.

Я нашел много сообщений и практическое руководство об этом. таким образом, я пытался сделать его через Crontab:

  • выполненный crontab -e
  • добавить @reboot /cronjobs/demo.sh >> /cronjobs/cronLogs/demo.output
  • разрешение выполнения набора написать сценарий с sudo chmod +x /cronjobs/demo.sh
  • система перезагрузки

Вывод был создан, но сценарий не выполнится. Таким образом, я попробовал другое решение rc.local файл:

  • выполненный sudo vi /etc/rc.local
  • добавленный /cronjobs/demo.sh || exit 1
  • система перезагрузки

Но мой сценарий не работает. Таким образом, я считал, что для перезагрузки сценарий должен быть в /etc/rc0.d/. Таким образом, я попробовал это:

  • переместите сценарий с mv /cronjobs/demo.sh /etc/rc0.d/K99_demo.sh
  • проверьте полномочия (все, кажется, в порядке),
  • система перезагрузки

То же самое - сценарий не будет выполняться.

Так, какова моя ошибка? Почему мой сценарий не может быть выполнен? Я могу выполнить свой сценарий, если я работаю ./demo.sh после того, как я переключился на папку с cd /cronjobs . Сценарий является демонстрационным файлом, который просто создает папку:

#!/bin/sh
echo demo output
mkdir /cronjobs/demofolder

Отредактированный: Замененные пути и имена файлов; добавленное полное содержание demo.sh файл

2
задан 30 October 2016 в 20:06

1 ответ

Самое легкое решение использует sudo полномочия, создают файл как это в /etc/cron.d/:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    mkdir /cronjobs
@reboot   root    sleep 10
@reboot   root    mkdir /cronjobs/demofolder

Это избегает использования файла сценария в целом и работает на всех пользователей независимо от их названия корневого каталога, т.е./home/steve,/home/mary, и т.д.

, Редактирование - Добавляет sleep 10

По любой причине, крон работает слишком быстро, или ядро работает слишком медленное при создании каталогов. Дополнительная строка sleep 10 была необходима между два mkdir строки.

Вам, возможно, не понадобятся 10 секунд, промежуточных, эти два делают команды каталога, но 10 работ над моей системой с SSD.

Редактирование 2 - Делает полный путь к каталогу в одной команде

Согласно комментариям ниже более простого метода, должен использовать:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    mkdir -p -v /cronjobs/demofolder
  • -p (долгая версия --parents) говорит mkdir автоматически создавать все родительские уровни каталога, если они не существуют.
  • -v (долгая версия --verbose) говорит mkdir печатать названия всех созданных каталогов.
0
ответ дан 2 December 2019 в 09:49

Другие вопросы по тегам:

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