запустить два текущих процесса при запуске с одним, который требует времени инициализации

Я бы хотел записать использование утилиты начала записи прямо при запуске, но я не могу найти правильную комбинацию операторов, каналов и спящих команд для входа в crontab -e. Я думаю, что моя самая умная попытка была бы

@reboot rtl_tcp || sleep 4 || ./go/bin/rtlamr -logfile=/home/ubuntu/log.json

Разве этот запуск не должен начать rtl_tcp, подождать несколько секунд, а затем начать запись с rtlamr?

0
задан 2 May 2016 в 01:15

2 ответа

Более легкий путь состоял бы в том, чтобы поместить Ваши команды запуска в сценарий и вызвать это:

# You could put the file in any other directory that is mounted
# early in boot time (not your HOME directory)
cat >>/var/local/foo <<EOF
#!/bin/bash
# Suggestion: use absolute path: /usr/local/bin/rtl_tcp
rtl_tcp
sleep 4
# Warning - MUST specify absolute path! "." is probably "/" here.
./go/bin/rtlamr -logfile=/home/ubuntu/log.json
EOF
chmod +x /var/local/foo

и, в Вашем crontab

@reboot /var/local/foo

Ваше выражение с || с требует, чтобы rtl_tcp и sleep 4 каждый возврат состояние 0 так следующий шаг было оценено.

0
ответ дан 2 May 2016 в 11:15
  • 1
    Я не нашел то, что Вы сказали, чтобы быть верными. Например, я установил Леденец на палочке через плоский корпус, все же в Программном инструменте Ubuntu под " Installed" это не появляется. – dln949 18 May 2018 в 17:00

Сразу я замечаю, что Ваша команда

@reboot rtl_tcp || sleep 4 || ./go/bin/rtlamr -logfile=/home/ubuntu/log.json

использует ИЛИ оператор списка (эти || символы). Это делает это:

ИЛИ список имеет форму

command1 || command2

, command2 выполняется, если и только если command1 возвращает ненулевой статус выхода.

Так эти sleep 4 команда будет только выполнена, если rtl_tcp сбои , и последнее (вход) команда только запустится если sleep сбои.

Попытка с помощью И оператор && списка, это только выполняет следующую команду, если предыдущий успешно выполняется.

И см. man bash для большего количества информации о них (Грамматика Shell-> Списки).

0
ответ дан 2 May 2016 в 11:15
  • 1
    @dln949 Хм, я соглашаюсь, что это не полезно. Даже в 2016 была некоторая поддержка плоского корпуса , поэтому Вы будете думать, что это должно быть еще лучше теперь. Могло случиться так, что это зависит, как Вы устанавливаете плоский корпус? Вы установили его непосредственно от Ubuntu Software с flathub-поддержкой? Я установил Рецепты как этот, и это обнаруживается в списке (даже с маркировкой " источник: dl.flathub.org" в списке обзора). Мне жаль, что у нас не было лучшей альтернативы, но я еще не услышал ни о ком. Возможно, мы будем приятно удивлены некоторое время. – Filbuntu 18 May 2018 в 21:53

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

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