1

Можно ли выполнить системную команду, например, mount определенное количество времени после перезагрузки системы?

Моя проблема в том, что у меня была запись в /etc/fstab для подключения хост-диска к виртуальной машине Linux (Ubuntu). Прямое монтирование не будет работать из-за некоторых проблем с синхронизацией при загрузке модулей ядра. Поэтому я использовал опцию noauto в fstab и добавил строку в /etc/rc.local для mount /some_disk .

Это работало для Ubuntu (12.04 и 14.04), но теперь я перешел на Lubuntu. И вышеупомянутое больше не работает. Наверное, это потому, что Lubuntu перезагружается намного быстрее, а rc.local выполняется рано. Кстати, я проверил, что другие команды в rc.local выполняются нормально. И mount /some_disk работает, когда sudo 'ed после запуска системы.

Поэтому мне интересно, как отложить mount /some_disk в сценарии, например, rc.local , скажем, через 1 минуту после перезагрузки?

Примечание: я могу сделать

sudo mount /some_disk

успешно через несколько секунд после перезагрузки (графический интерфейс включен).

3 ответа3

2

Ответ @D Schlachter - хорошая идея, но не хватает точки команды, которую нужно выполнить от имени пользователя root. Тем не менее, вы можете использовать общесистемный crontab в /etc /crontab или корневой каталог,

sudo crontab -e

Обратите внимание на разницу в синтаксисе между этими файлами, так как общесистемному crontab нужен дополнительный столбец для пользователя, для которого будет выполняться команда.

@reboot root sleep 60; mount /some_disk
1

Вы можете использовать cron . Добавьте эту строку в ваш crontab (crontab -e):

@reboot sleep 60 ; mount /some_disk

[1] [2]

1

Да, это возможно. просто создайте сценарий инициализации и поместите его в /etc/init.d/ .

Затем зарегистрируйте скрипт с разными уровнями выполнения. с помощью следующей команды:

update-rc.d <scriptname> defaults 99 01 

99 означает, что он вызывается в самом конце процесса загрузки.

Сложные сценарии демонов выглядят как /etc/init.d/skeleton .

Однако, поскольку ваш скрипт вообще не должен быть демоном, следующий скрипт должен работать.

#!/bin/sh

case "$1" in
  start)

    sleep 60
    # your code

    ;;
esac

quit 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .