Debian: установить команду «всегда в рабочем состоянии» (и перезапустить при обновлении)

Это может сработать:

_vlink () {
    case $COMP_CWORD in
        1) COMPREPLY=( $(compgen -W "plug unplug replug" "$2") ) ;;
        2) local IFS=$'\n'
            COMPREPLY=( $(cd /some/dir && compgen -d "$2") ) ;;
    esac
}

complete -F _vlink vlink

Замените /some/dirкаталогом, содержащим интересующие подкаталоги. (Я предполагаю, что в ваших именах каталогов нет символов новой строки.)

  • COMP_CWORD— индекс завершаемого слова (0 — имя команды)
  • вторым аргументом функции завершения является завершаемое слово (первый аргумент — имя команды, а третий — предыдущее слово)

Итак, мы используемcompgen:

  • для первого аргумента, чтобы сгенерировать совпадающие слова из списка слов, заданного с помощью -W, и
  • для второго аргумента, чтобы сгенерировать совпадающие имена каталогов из соответствующего каталога.
1
01.11.2019, 19:37
1 ответ
inotifywait -e modify rest-api.py

Еще несколько деталей, чтобы все заработало:

rest_api=$(pwd)/rest-api.py
rest_api_conf=$(pwd)/rest-api.conf
rest_api_log=/var/log/rest-api/rest-api.log

# log
mkdir -p /var/log/rest-api
logrotate $rest_api_conf

# daemon
setsid $rest_api 2>&1 >> $rest_api_log &
pid=$!
trap "kill $pid" exit

while true; do
  inotifywait -e modify $rest_api
  kill $pid
  setsid $rest_api 2>&1 >> $rest_api_log &
  pid=$!
  trap "kill $pid" exit
done

Наконец, запустите как фоновый процесс или демон:

./rest-api.sh &
setsid./rest-api.sh 2>&1 >/dev/null
0
27.01.2020, 23:57

Теги

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