Всем добрый день! Есть программа, консольная, которая будет работать в фоновом режиме и запускаться вместе с ОС (Linux). Интересует материал как это организовать. Работать именно с api Linux раньше не пробовал.
Отслеживать
9,639 4 4 золотых знака 21 21 серебряный знак 35 35 бронзовых знаков
задан 6 сен 2016 в 8:39
Peter Lavreniuk Peter Lavreniuk
2,921 6 6 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков
/opt/bin/myprog демонизации». Вот хорошая статья на хабре. Основная задача демонизации — отцепиться от консоли.
Конечно, можно запустить и с https://ru.stackoverflow.com/questions/563323/autorun-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81-%D0%B2-%D1%84%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D0%BC-%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5″ target=»_blank»]ru.stackoverflow.com[/mask_link]
Для запуска программы в фоновом режиме после команды с параметрами необходимо указать знак
Некоторые команды shell занимают много времени при выполнении. Эти команды можно запустить в фоновом режиме с использованием
Примечание. Интерактивные команды shell (например, read ) нельзя запускать в фоновом режиме.
Когда вы запускаете команду в фоновом режиме, то система Linux выводит номер процесса. Вы можете использовать этот номер для завершения выполняющейся в фоновом режиме команды. Появившаяся подсказка означает, что терминал свободен и ожидает вашу команду.
Запустить команду в фоновом режиме вы можете только в том случае, если ваш терминал предоставляет вам такую возможность.
Alex Otwagin 2002-12-16
Источник: www.opennet.ru
Для запуска программы в фоновом режиме после команды с параметрами необходимо указать знак
Данная команда jobs будет использоваться несколько раз на протяжении данной главы.
3.1.2. Сочетание клавиш Control-Z
Исполнение некоторых процессов может быть остановлено с помощью комбинации клавиш Ctrl-Z . Данная комбинация клавиш позволяет отправить сигнал SIGSTOP ядру Linux , что приведет к остановке исполнения процесса.
В том случае, если данная комбинация клавиш используется при работе с текстовым редактором vi(m) , процесс текстового редактора vi(m) продолжает исполняться в фоновом режиме. Процесс vi(m) , исполняющийся в фоновом режиме, может быть обнаружен в выводе команды jobs .
3.1.3. Амперсанд ( , размещенному в конце строки команды, также отображаются в выводе команды jobs .
3.1.4. Команда jobs -p
Команда jobs поддерживает интересный параметр -p , предназначенный для вывода идентификаторов процессов, исполняющихся в фоновом режиме.
3.1.5. Команда fg
Вызов команды fg позволяет перевести процесс из фонового режима в текущую командную оболочку. Номер фоновой задачи для переноса в текущую командную оболочку является параметром команды fg .
3.1.6. Команда bg
Задачи из фонового режима, исполнение которых было приостановлено , могут быть снова запущены в фоновом режиме с помощью команды bg . Команда bg осуществляет отправку сигнала SIGCONT соответствующему процессу.
Ниже приведен пример запуска процесса sleep в фоновом режиме (исполнение которого было остановлено с помощью сочетания клавиш Ctrl-Z ) с последующей повторной активацией этого процесса в фоновом режиме с помощью команды bg .
3.2. Практическое задание: фоновые процессы
1. Используйте команду jobs , чтобы удостовериться в том, что никакие процессы не выполняются в фоновом режиме.
2. Используйте текстовый редактор vi для создания небольшого текстового файла. Переведите процесс vi в фоновый режим и остановите его исполнение.
3. Используйте команду jobs , чтобы убедиться в том, что исполнение процесса vi в фоновом режиме остановлено.
4. Выполните команду find / > allfiles.txt 2>/dev/null в фоновом режиме. Остановите исполнение этой команды в фоновом режиме перед тем, как будет закончен обход файловой системы.
5. Запустите два процесса sleep с длительным периодом ожидания в фоновом режиме.
6. Выведите информацию обо всех задачах , исполняющихся в фоновом режиме.
7. Используйте утилиту kill для остановки исполнения одного из процессов с именем sleep .
8. Инициируйте продолжение исполнения процесса find в фоновом режиме (убедитесь в том, что исполнение продолжилось).
9. Переведите один из процессов с именем sleep назад в текущую командную оболочку.
10. (Общий вопрос, ответ может быть дан при наличии свободного времени. ) Дайте детальные пояснения по поводу источников чисел из следующего примера. В каких условиях переменные заменяются на их значения? Какая командная оболочка осуществляет эту замену?
3.3. Корректная процедура выполнения практического задания: фоновые процессы
1. Используйте команду jobs , чтобы удостовериться в том, что никакие процессы не выполняются в фоновом режиме.
jobs (возможно одни из процессов cat все еще исполняется?)
2. Используйте текстовый редактор vi для создания небольшого текстового файла. Переведите процесс vi в фоновый режим и остановите его исполнение.
vi text.txt
(в процессе работы с vi нажмите ctrl-z)
3. Используйте команду jobs , чтобы убедиться в том, что исполнение процесса vi в фоновом режиме остановлено.
4. Выполните команду find / > allfiles.txt 2>/dev/null в фоновом режиме. Остановите исполнение этой команды в фоновом режиме перед тем, как будет закончен обход файловой системы.
[2]+ Stopped find / > allfiles.txt 2> /dev/null
5. Запустите два процесса sleep с длительным периодом ожидания в фоновом режиме.
sleep 4000 sleep 5000 «>
Linux — запуск процессов в фоновом режиме | UnixHost
Запуск команд Linux в фоновом режиме. Командная строка Linux
Источник: rus-linux.net