Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать дочерний процесс в Linux?

Sasha Ershov Ученик (167), на голосовании 11 месяцев назад
У меня n-ное количество камер(с них забирается трафик с помощью ffmpeg), они выводятся как основные процессы в htop, а нужно главный процесс и дочерние от него. Важная пометка, это все сервисы systemd( один поток = одна камера = один сервис ) и в конечном итоге нужно чтобы я включил главный сервис, и дочерние запустились автоматом и отобразились именно как (ДОЧЕРНИЕ, а не равные главному). На первом изображении главный процесс(и зеленым дочерние процессы), нужно так же сделать, а справа много равных процессов, на данный момент у меня выводится как справа.
Голосование за лучший ответ
Ламер Ламерович Просветленный (26317) 1 год назад
зелёные разве не потоки? поставь галочку в setup на hide userland process threads
Sasha ErshovУченик (167) 1 год назад
А где эта галочка, не понимаю до конца где сетап.
Да да, это потоки, все верно. Задание сделать нити процессов (процес и в нем потоки)
Ламер Ламерович Просветленный (26317) в низу, вроде F2 Setup
Sasha ErshovУченик (167) 1 год назад
да, вы правы были, они стали двумя процессами, потоки исчезли
Ламер Ламерович Просветленный (26317) на линуксе вроде есть специализированный бесплатный софт для камер наблюдения
Sasha ErshovУченик (167) 1 год назад
Это не ffmpeg ? А просто, как возможно нити сделать ? сможете подсказать, вот есть сервис один 1, сервис 2, сервис 3
как сделать так, чтобы сервис один, порождал две нити, ну или хотябы не порождал а отображал их как свои нити в htop?
Ламер Ламерович Просветленный (26317) попробуй погуглить "systemd run multiple processes" хотя там всё как-то неудобно. и ещё может "systemd group services" я в этом плохо разбираюсь.
Sasha ErshovУченик (167) 12 месяцев назад
[Unit]
Description=SATSkameraNAZVANIE1
BindsTo= main.target

[Service]
WorkingDirectory=/usr/bin
Type=
User=root

ExecStartPre=/usr/bin/touch /var/run/kameraTESTGOOD1.pid
ExecStartPre=/usr/bin/chmod u+s /var/run/kameraTESTGOOD1.pid
PIDFile=/var/run/kameraTESTGOOD1.pid
Sasha ErshovУченик (167) 12 месяцев назад
#Создание директории куда писать, и выдача прав
ExecStartPre=/usr/bin/mkdir -p /data/cam
ExecStartPre=/usr/bin/chmod 777 /data/cam

#ExecStart=/usr/bin/bash /scripts/KAMERA.sh
ExecStart=ffmpeg -stimeout 5000000 -rtsp_transport udp -i "ссылка на поток" -map 0 -vcodec copy -acodec aac -strict -2 -reconnect 1 -f segment -segment_format mp4 -segment_time 10 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 -avoid_negative_ts 1 /data/cam/1%%03d_%%Y%%m%%d%%H%%M%%S.mp4

#Мягкое завершение через SIGTERM
ExecStop=/bin/kill -s SIGTERM $MAINPID
#Если мягкое завершение не помогло, то тут уже после 6 секунд процесс киляется
#ExecStopPost=/bin/sleep ; /bin/kill -s SIGKILL $MAINPID
Sasha ErshovУченик (167) 12 месяцев назад
#KillSignal=SIGINT

Restart=on-failure
#RestartSec=2s
#Логи с ошибками и без.(создание файлов и проверка на наличие их, выдача прав им что все и вся могут их смотреть, вывод логов без перезаписи)
ExecStartPre=/bin/sh -c 'if [ ! -f /var/log/kameraTESTerror.log ]; then touch /var/log/kameraTESTerror.log; fi'
ExecStartPre=/bin/sh -c 'if [ ! -f /var/log/kameraTESToutput.log ]; then touch /var/log/kameraTESToutput.log; fi'

ExecStartPre=/bin/chmod u+s /var/log/kameraTESTerror.log
ExecStartPre=/bin/chmod u+s /var/log/kameraTESToutput.log

StandardOutput=append:/var/log/kameraTESTerror.log
StandardError=append:/var/log/kameraTESToutput.log

KillMode=process
[Install]
WantedBy= multi-user.target
Ламер Ламерович Просветленный (26317) вот тут очень похожая тема https://www.linux.org.ru/forum/general/15896976
Sasha ErshovУченик (167) 12 месяцев назад
Type=simple*
Ламер ЛамеровичПросветленный (26317) 12 месяцев назад
а что в логах написанно?
Похожие вопросы