Должен ли я на рабочем столе с Bash использовать '&', nohup, disown или какую-то комбинацию из трех, чтобы запустить процесс и запустить его полностью самостоятельно?

Привязка мыши для переключения действия при перетаскивании к краю экрана: Кажется, нет очевидного способ заставить Openbox обнаруживать перетаскивание окна к краю экрана как действие . Возможно, проще всего настроить горячие углы, например, с помощью behavior_screen_edge в xdotool , и использовать их для запуска уже найденной вами комбинации клавиш Openbox.

Что заставляет Openbox отправлять окна на другие рабочие столы, перетаскивая их к краю экрана? Это настраивается в . Пример из моего rc.xml в разделе :

  400
  

7
30.03.2018, 19:51
3 ответа

Обычно я просто делаю следующее:

  1. myprog &если я просто хочу запустить что-то в фоновом режиме из моей текущей оболочки входа в систему. Мне этого достаточно в 99% случаев...

  2. nohup myprog > /my/path/output.txt &если я запускаю что-то из оболочки, но хочу выйти из системы после этого (возможно, пока фоновая задача все еще выполняется ).

1
27.01.2020, 20:17

Когда мне нужно запустить скрипт, который будет выполняться в течение длительного времени, и я нахожусь в sshсеансе, я хочу либо:

  1. Задача должна продолжаться даже при обрыве сети или когда я упаковываю свой ноутбук и ухожу.

    а. Задача может быть завершена без моего участия.

     nohup do_my_stuff &
    

    б. Задаче может понадобиться что-то от меня на стандартном вводе.

     man tmux
     history -w
     tmux
     do_my_stuff
    
  2. Фоновый процесс каким-то образом улучшает мой текущий сеанс и должен умереть вместе с сеансом. Редкость.

     enhance_my_session  >>/tmp/enhance.$$.log 2>&1 &
    
  3. Я хочу, чтобы эта штука случайным образом выводила несколько логов во время сеанса ssh. Чего ждать? Нет, я бы никогда не хотел этого. Спасибо disown.

  4. Еще одна вещь, которую я никогда не хочу, :преобразовывать процесс в полностью отсоединенный демон, но избегать его автоматического запуска при следующей загрузке. Я бы никогда этого не хотел, потому что я не могу предсказать, когда система перезагрузится и кто будет ее перезагружать.

11
27.01.2020, 20:17

Вы должны отличать выход из оболочки от прерывания терминала.

  1. Оболочка уничтожает все известные задания (, но не их дочерние ), когда получает сигнал прерывания.
  2. Терминал уничтожает все, для чего он был управляющим терминалом.

В целом лучшим решением (на уровне пользователя )ИМХО является screen.

Если ваша задача больше связана с системой -, чем с пользователем -, вы можете вместо этого сделать ее службой systemd, которую вы запускаете вручную.

0
27.01.2020, 20:17

Теги

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