Запуск скрипта в фоновом режиме

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4666
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запуск скрипта в фоновом режиме

Сообщение SLEDopit » 06.04.2010 16:51

t.t писал(а):
06.04.2010 15:35
Учитывая, что я не запускаю больше одной сессии на машине, и пользуюсь ими в одиночку, то пп. 1 и 3 мне не важны. Хоткеи vi и emacs тоже, на мой взгляд, совсем не идеальны (хотя emacs я использую). А статусную строку я не использую впринципе. Так что для меня актуален только последний пункт.
Ну тут уж каждому свое. У меня, можно сказать, обратная ситуация. Я часто работаю с одной и той же сессий с разных машин. Очень часто у меня запущенно по 5-6 сессий. И часто я работаю совсем не один на сервере.
И я совсем не работаю с elinks (:

update
sash-kan писал(а):
06.04.2010 16:41
как же вам мозги-то промыли (улыбка).
зато теперь чистые (:
Видать я ман плохо читал по скрину.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 06.04.2010 16:58

SLEDopit писал(а):
06.04.2010 16:51
Я часто работаю с одной и той же сессий с разных машин.
Я тоже. Но мне не нужно, чтобы одна и та же сессия была доступна _одновременно_ с разных машин. Более того, это вредно.

SLEDopit писал(а):
06.04.2010 16:51
Очень часто у меня запущенно по 5-6 сессий.
На одной машине?? Зачем? И вопрос на опережение: часто было нужно перекидывать окна между разными сессиями?

SLEDopit писал(а):
06.04.2010 16:51
И часто я работаю совсем не один на сервере.
Я тоже. Это здесь ни при чём.

SLEDopit писал(а):
06.04.2010 16:51
И я совсем не работаю с elinks (:
Это был только пример. Первое, что вспомнилось. И далеко не единственная программа, умеющая взаимодействовать со screen-ом.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Запуск скрипта в фоновом режиме

Сообщение Nazyvaemykh » 06.04.2010 17:10

sash-kan писал(а):
06.04.2010 16:41
итого осталась одна «киллер»-фича.

а как же более адекватная лицензия?
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск скрипта в фоновом режиме

Сообщение sash-kan » 06.04.2010 18:08

Nazyvaemykh
более «равная» чему?

http://ru.wiktionary.org/wiki/адекватный
QUOTE писал(а):Происходит от лат. adaequatus «уравненный, приравненный», далее от гл. adaequare «сравнивать, приравнивать», из ad- «к, на» + aequāre «делать ровным (равным)», от aequus «ровный, плоский»
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 06.04.2010 18:16

Nazyvaemykh писал(а):
06.04.2010 17:10
sash-kan писал(а):
06.04.2010 16:41
итого осталась одна «киллер»-фича.
а как же более адекватная лицензия?
А это весьма субъективно, какая из них "более адекватная".
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск скрипта в фоновом режиме

Сообщение sash-kan » 06.04.2010 18:46

Nazyvaemykh
с днём рождения, кстати!
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4666
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запуск скрипта в фоновом режиме

Сообщение SLEDopit » 06.04.2010 19:30

t.t писал(а):
06.04.2010 16:58
Более того, это вредно.
Есть машины, к которым физически доступ есть только у меня. Честно, мне лениво там каждый раз все открывать/закрывать.
t.t писал(а):
06.04.2010 16:58
На одной машине?? Зачем?
Да, на одной. Мне так удобнее разграничивать где чем я занимаюсь.
Грубо говоря в одной сессии - работа над проектом а, в другой - над проектом б. В каждом из них до десяти окон. Объединять все в одно было бы неудобно. Да, я не работаю одновременно в них во всех. Но часто работа чередуется. И каждый раз возвращаться к тому состоянию, что было до закрытия. Было бы неудобно.
Да и есть фоновые вещи, которые висят в таких сессиях, которые не нужно закрывать.
t.t писал(а):
06.04.2010 16:58
И вопрос на опережение: часто было нужно перекидывать окна между разными сессиями?
Нет. Пару раз. В принципе и без этого можно было обойтись.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Запуск скрипта в фоновом режиме

Сообщение Nazyvaemykh » 06.04.2010 20:04

sash-kan писал(а):
06.04.2010 18:08
Nazyvaemykh
более «равная» чему?

Ответ зависит от используемой системы: в системе GNU более «адекватна» одна лицензия, в BSD — другая. (:
На мой взгляд, программы настолько похожи, что на первый план выходит именно разница в лицензиях.

За поздравление — спасибо.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:

Аватара пользователя
Jampire
Сообщения: 163
ОС: Gentoo Linux amd64 || x86

Re: Запуск скрипта в фоновом режиме

Сообщение Jampire » 06.04.2010 22:55

shadow999 писал(а):
03.04.2010 19:28
Cron не подойдет. Автозапуск при загрузке системы тоже. Можно это как-нибудь организовать?

Собственно в пылу обсуждений так я и не нашел, почему нельзя использовать крон? У вас нет прав на него? Договориться с админом не можете? А что вы будите делать, если ваш скрипт мониторинга тоже упадет или перезагрузка системы? Кто его подымет? ИМХО, крон идеальный вариант.
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запуск скрипта в фоновом режиме

Сообщение drBatty » 06.04.2010 23:05

Jampire писал(а):
06.04.2010 22:55
Собственно в пылу обсуждений так я и не нашел, почему нельзя использовать крон? У вас нет прав на него? Договориться с админом не можете? А что вы будите делать, если ваш скрипт мониторинга тоже упадет или перезагрузка системы? Кто его подымет? ИМХО, крон идеальный вариант.

ага. Кстати, командой crontab любой юзер может сделать СВОЙ crontab. Чисто для себя.

Nazyvaemykh
будьте здоровы.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4666
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запуск скрипта в фоновом режиме

Сообщение SLEDopit » 07.04.2010 00:35

Jampire писал(а):
06.04.2010 22:55
Собственно в пылу обсуждений так я и не нашел, почему нельзя использовать крон? У вас нет прав на него? Договориться с админом не можете? А что вы будите делать, если ваш скрипт мониторинга тоже упадет или перезагрузка системы? Кто его подымет? ИМХО, крон идеальный вариант.
Ну тогда уж можно заодно поинтересоваться, зачем такая сложная схема с тремя файлами, когда все можно сделать одним файлом с бесконечным циклом (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 07.04.2010 11:11

SLEDopit писал(а):
06.04.2010 19:30
t.t писал(а):
06.04.2010 16:58
Более того, это вредно.
Есть машины, к которым физически доступ есть только у меня. Честно, мне лениво там каждый раз все открывать/закрывать.
У меня тоже есть такие машины. Но это никак не объясняет необходимости _одновременного_ (т.е. разными людьми) доступа к одной сессии, а даже несколько этому противоречит.

Jampire писал(а):
06.04.2010 22:55
shadow999 писал(а):
03.04.2010 19:28
Cron не подойдет. Автозапуск при загрузке системы тоже. Можно это как-нибудь организовать?
Собственно в пылу обсуждений так я и не нашел, почему нельзя использовать крон? У вас нет прав на него? Договориться с админом не можете? А что вы будите делать, если ваш скрипт мониторинга тоже упадет или перезагрузка системы? Кто его подымет? ИМХО, крон идеальный вариант.
На пользовательский кронтаб вроде бы права не перекрывают обычно (да и насколько вообще это можно сделать?).
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запуск скрипта в фоновом режиме

Сообщение drBatty » 07.04.2010 15:32

t.t писал(а):
07.04.2010 11:11
На пользовательский кронтаб вроде бы права не перекрывают обычно (да и насколько вообще это можно сделать?).

в мане почему-то об этом не написано. Причём сами таблицы у меня хранятся в каталоге с правами
drwxr-x--- 2 root root 4096 2010-04-07 14:50 crontabs/
т.е. юзер туда не может войти, и не может создать там свою таблицу. А crontab оснащена правом SUID bit...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Запуск скрипта в фоновом режиме

Сообщение /dev/random » 07.04.2010 15:39

В gentoo использовать crontab могут только пользователи, включённые в группу crontab. В других дистрибутивах - не знаю. Так что эти права могут вообще по-умолчанию отсутствовать.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 07.04.2010 18:06

/dev/random писал(а):
07.04.2010 15:39
В gentoo использовать crontab могут только пользователи, включённые в группу crontab. В других дистрибутивах - не знаю. Так что эти права могут вообще по-умолчанию отсутствовать.
Ты немного путаешь. Пользовательские кронтабы не имеют отношения к этой группе. По крайней мере, в Debian это так:

Shell

$ sudo ls -l /usr/bin/crontab /var/spool/cron/crontabs/ -rwxr-sr-x 1 root crontab 27724 Sep 28 2008 /usr/bin/crontab /var/spool/cron/crontabs/: total 8 -rw------- 1 root crontab 528 Mar 14 20:55 root -rw------- 1 t crontab 231 Apr 7 17:57 t $ groups t
Пользовательский кронтаб создан только что (как видно выше) с помощью команды crontab -e.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Запуск скрипта в фоновом режиме

Сообщение /dev/random » 07.04.2010 18:12

Shell

$ crontab -l cannot chdir(/var/spool/cron), bailing out. /var/spool/cron: Отказано в доступе
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4666
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запуск скрипта в фоновом режиме

Сообщение SLEDopit » 07.04.2010 18:59

t.t писал(а):
07.04.2010 11:11
Но это никак не объясняет необходимости _одновременного_ (т.е. разными людьми) доступа к одной сессии, а даже несколько этому противоречит.
Я когда ухожу, я никакие окна не закрываю. Т.е. фактически терминалы остаются висеть подключенными.
В _одновременно_ с теми же висящими терминалами я захожу с другой машины на ту же сессию. Без этого можно пережить, но мне так удобнее.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 07.04.2010 19:07

/dev/random писал(а):
07.04.2010 18:12

Shell

$ crontab -l cannot chdir(/var/spool/cron), bailing out. /var/spool/cron: Отказано в доступе
Извини, погорячился. Выходит, действительно дистрибутиво-зависимо.

Shell

$ crontab -l no crontab for t
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 07.04.2010 19:14

SLEDopit писал(а):
07.04.2010 18:59
t.t писал(а):
07.04.2010 11:11
Но это никак не объясняет необходимости _одновременного_ (т.е. разными людьми) доступа к одной сессии, а даже несколько этому противоречит.
Я когда ухожу, я никакие окна не закрываю. Т.е. фактически терминалы остаются висеть подключенными.
В _одновременно_ с теми же висящими терминалами я захожу с другой машины на ту же сессию. Без этого можно пережить, но мне так удобнее.

Shell

alias screen=screen -D -R alias s=\screen
Первый -- подключение к последней сессии, с возможным принудительным отключением её от неактивного терминала; либо старт новой сессии в случае отсутствия. Второй -- для запуска команд в новых окнах текущей сессии.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 11.04.2010 12:51

Кстати, у screen-а тоже есть multi-display mode и multi-user mode. Почему эта возможность упоминается в списке преимуществ tmux-а, загадка.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск скрипта в фоновом режиме

Сообщение sash-kan » 11.04.2010 13:19

t.t писал(а):
11.04.2010 12:51
Почему эта возможность упоминается в списке преимуществ tmux-а, загадка.
будем надеяться на хорошее — что автор этой строчки просто недостаточно компетентен.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

Аватара пользователя
ripke
Сообщения: 85
ОС: Ubuntu 9.04, x86_64

Re: Запуск скрипта в фоновом режиме

Сообщение ripke » 06.05.2010 05:27

Допустим, запускаю выключение в фоне без привязки к терминалу

Код: Выделить всё

nohup shutdown -P [TIME] &

Почему jobs не показывает этот процесс? Как мне убедиться, что данный фоновый процесс запущен?
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запуск скрипта в фоновом режиме

Сообщение drBatty » 06.05.2010 05:56

ripke писал(а):
06.05.2010 05:27
очему jobs не показывает этот процесс? Как мне убедиться, что данный фоновый процесс запущен?

man ps
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
ripke
Сообщения: 85
ОС: Ubuntu 9.04, x86_64

Re: Запуск скрипта в фоновом режиме

Сообщение ripke » 06.05.2010 06:02

С ps мне все ясно. Просто я имел ввиду инструмент, который конкретно занимается фоновыми процессами, как jobs. ) Почему jobs не показывает?
Что-то как-то непонятно. Вчера запускал, все нормально срабатывало, закрывал окно терминала, ждал немного) и комп в заданное время выключался, а сейчас что-то не получается.

Код: Выделить всё

~$ sudo nohup shutdown -P 23:39 &
[1] 10700
~$ jobs
[1]+  Stopped                 sudo nohup shutdown -P 23:39

После этого закрываю терминальное окно, открываю снова, а процесса нету(.

Код: Выделить всё

~$ jobs
~$

Почему не срабатывает и почему выше показывает stopped а не running?
Спасибо сказали:

Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Запуск скрипта в фоновом режиме

Сообщение korisk » 06.05.2010 07:15

ripke писал(а):
06.05.2010 06:02
С ps мне все ясно. Просто я имел ввиду инструмент, который конкретно занимается фоновыми процессами, как jobs. ) Почему jobs не показывает?
Что-то как-то непонятно. Вчера запускал, все нормально срабатывало, закрывал окно терминала, ждал немного) и комп в заданное время выключался, а сейчас что-то не получается.

Код: Выделить всё

~$ sudo nohup shutdown -P 23:39 &
[1] 10700
~$ jobs
[1]+  Stopped                 sudo nohup shutdown -P 23:39

После этого закрываю терминальное окно, открываю снова, а процесса нету(.

Код: Выделить всё

~$ jobs
~$

Почему не срабатывает и почему выше показывает stopped а не running?


Может так?
sudo nohup shutdown -P 23:39 &>/dev/null &
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали:

Аватара пользователя
ripke
Сообщения: 85
ОС: Ubuntu 9.04, x86_64

Re: Запуск скрипта в фоновом режиме

Сообщение ripke » 06.05.2010 07:41

Не, не так. Может тут озвучить крамольную мысль), что nohup это брехня и неправда?
If standard input is a terminal, redirect it from /dev/null.

Это вот так чтоли?

Код: Выделить всё

~$ sudo nohup shutdown -P 23:39 < /dev/null

Спасибо сказали:

Аватара пользователя
ripke
Сообщения: 85
ОС: Ubuntu 9.04, x86_64

Re: Запуск скрипта в фоновом режиме

Сообщение ripke » 06.05.2010 08:24

user@host

~$ sudo nohup shutdown -P 23:39 & < /dev/null [1] 21559 ~$ nohup: ввод игнорируется, вывод добавляется в `nohup.out' Широковещательное сообщение от root@ubuntu (unknown) в 15:02... Система будет остановлена для power off через 517 минут(ы)! ~$ jobs [1]+ Running sudo nohup shutdown -P 23:39 &

Потом выхожу из терминала, снова открываю

user@host

~$ jobs ~$ ps ax | grep shutdown 21559 ? S 0:00 shutdown -P 23:39 23139 pts/0 R+ 0:00 grep shutdown

А jobs to не показывает? Почему? И еще зачем перенаправлять ввод из девайс нуль?
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запуск скрипта в фоновом режиме

Сообщение t.t » 06.05.2010 09:10

ripke писал(а):
06.05.2010 08:24
Потом выхожу из терминала, снова открываю

user@host

~$ jobs ~$ ps ax | grep shutdown 21559 ? S 0:00 shutdown -P 23:39 23139 pts/0 R+ 0:00 grep shutdown

А jobs to не показывает? Почему?
Именно потому, что Вы перезапустили терминал. Задача (job) -- понятие локальное, существует только внутри той оболочки, откуда была запущена.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
ripke
Сообщения: 85
ОС: Ubuntu 9.04, x86_64

Re: Запуск скрипта в фоновом режиме

Сообщение ripke » 06.05.2010 09:34

Ясно. Тогда все-таки как мне просмотреть именно фоновые процессы в такой ситуации? Или то, что запускается с nohup это уже как бы нефоновый процесс?
Спасибо сказали:

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Запуск скрипта в фоновом режиме

Сообщение watashiwa_daredeska » 06.05.2010 10:18

ripke писал(а):
06.05.2010 09:34
Тогда все-таки как мне просмотреть именно фоновые процессы в такой ситуации?
Ну, Вам же уже сказали: ps. Или что такое, по Вашему, фоновый процесс? Тот, который по jobs показывается? В таком случае, в свежезапущенной shell действительно нет «фоновых процессов», и запущенная с nohup команда перестаёт быть «фоновым процессом» какого-либо шелла вообще. Кроме того, 1 job может быть несколькими процессами с т.з. ОС, ибо job — это собственная внутренняя абстракция шелла.
Спасибо сказали: