Когда сервер запускается, я хочу, чтобы он выполнял эти команды по порядку: [dублировать]

У меня есть процесс, который мне нужно запустить при запуске. Это то, что должно оставаться в рабочем состоянии все время, когда машина включена. На данный момент я просто вводил следующее в bash все, что я запускал на своем сервере.

command -f argument & disown

Я знаю, что мне нужно создать скрипт init, но я понятия не имел, как это сделать. После некоторых исследований кажется, что Ubuntu использует systemd (некоторые ссылки сказали Upstart, они не то же самое?) Как его система init. Но все проводники, которые я нашел в сети, скажут мне, чтобы мой исполняемый файл был в /etc/init или /etc/init.d. Инициатор должен быть совершенно другой системой инициализации.

Может ли кто-нибудь указать мне в правильном направлении? Примерный скрипт systemd или даже онлайн-гид - отличная помощь.

3
задан 10 May 2017 в 19:36

2 ответа

Вам нужны два файла:

Ваш файл сценария: command.sh Файл .service, который будет помещен в /etc/systemd/system, и с разрешения 644 с chmod 664 command.service: command.service простейшим контентом command.service было бы следующее: [Unit] Description=Some service description [Service] ExecStart=/bin/bash -c "/path/to/command.sh -f argument & disown" [Install] WantedBy=multi-user.target Теперь, чтобы запустить его при загрузке, мы используем контроллер systemd systemctl: sudo systemctl enable command # or sudo systemctl enable command.service

Обратите внимание, что для разных разделов доступно множество других параметров , см. здесь и убедитесь, что ваш command.sh является исполняемым с chmod +x command.sh

5
ответ дан 18 July 2018 в 02:48

Вам нужны два файла:

Ваш файл сценария: command.sh Файл .service, который будет помещен в /etc/systemd/system, и с разрешения 644 с chmod 664 command.service: command.service простейшим контентом command.service было бы следующее: [Unit] Description=Some service description [Service] ExecStart=/bin/bash -c "/path/to/command.sh -f argument & disown" [Install] WantedBy=multi-user.target Теперь, чтобы запустить его при загрузке, мы используем контроллер systemd systemctl: sudo systemctl enable command # or sudo systemctl enable command.service

Обратите внимание, что для разных разделов доступно множество других параметров , см. здесь и убедитесь, что ваш command.sh является исполняемым с chmod +x command.sh

5
ответ дан 24 July 2018 в 17:39
  • 1
    2 вопроса: 1. & и disown являются специфичными для bash. Нужно ли писать /bin/bash -c "command -f argument & disown" или будет то, что у вас будет достаточно? – vikarjramun 10 May 2017 в 22:28
  • 2
    да, что бы так это сценарий... – George Udosen 10 May 2017 в 23:32
  • 3
    Считаете ли вы использование Session and Startup -> Application Autostart? – user 11 May 2017 в 00:14
  • 4
    Включение & quot; & amp; & quot; и "отключение" не требуется, так как systemd уже запускает команду в фоновом режиме, которую snot подключает к сеансу оболочки. Проверить man systemd.service, чтобы подтвердить Type=, подходит для вашей службы. Тогда, поскольку вам не нужно & quot; & amp; & quot; и «отключить», вы должны иметь возможность выполнять команду напрямую, а не через Bash. – Mark Stosberg 11 May 2017 в 01:15
  • 5
    @WillemK У меня нет GUI, но в противном случае я бы сделал это – vikarjramun 11 May 2017 в 03:24

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

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