Выполнение команды, которая не завершится после закрытия терминала

Если у пользователя нет разрешения на выполнение и он не может или не желает его изменять, он должен выполнить его как группа или пользователь, у которого есть разрешение на выполнение.

Если они знают пароль root, то:

su -c <executable>

Если они не знают пароль root, но им доверяет sudo , то:

sudo <executable>

Если они не знают пароль root и не имеют прав sudo , то есть причина, по которой они должны запускать исполняемый файл.

1
02.04.2019, 03:10
1 ответ

Вы можете написать

nohup bash -c 'mosquitto_sub -v -u Test -P Test123 -t "#" | while read -r line ; do
        echo -e "$(date "+%Y-%m-%d %H:%M:%S") $line"
done | tee -a MQTT.txt'

Однако на самом деле вам нужно screenили tmux. Эта программа позволит вам запустить команду, выйти из системы и после входа в систему просто подключиться к старому «уже закрытому» терминалу.


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

screen

mosquitto_sub -v -u Test -P Test123 -t '#' | while read -r line ; do
    echo -e "$(date "+%Y-%m-%d %H:%M:%S") $line"
done | tee -a MQTT.txt

# Hit "Ctrl-a d", it will detach the screen

Теперь вы можете закрыть терминал и выйти из системы, после входа снова запустить screen -R.

1
27.01.2020, 23:41

Теги

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