Size: a a a

2020 November 20

EK

Evgeny Kuchkov in pro.bash
tldr
если хочешь отслеживать выполнение чего-то в фоне, то используй screen
root@mpro20y-rt-1:~# cat 1.sh
#!/bin/bash

screen -S test_name -dm bash -c "mysql -sN -e 'select sleep(10)'"
i=0
while screen -ls test_name &>/dev/null; do
 echo $i && (( i++ )) && sleep 1
done

root@mpro20y-rt-1:~# ./1.sh
0
1
2
3
4
5
6
7
8
9
10
источник

S

Snems in pro.bash
Понял, спасибо
источник

🌚

🌚 YupiRex in pro.bash
Snems
Понял, спасибо
 [[ -n "$not_install" ]] && (apt -y install "$not_install") > /tmp/apt.log &
   bgapt=$!
   
   (wget -qO /tmp/latest.tar.gz https://wordpress.org/latest.tar.gz
   tar zxvf /tmp/latest.tar.gz -C /tmp) >/tmp/wget.log &
   bgwget=$!
   
   progress=' -\|/' i=1
   while [[ -n "$(ps -p ${bgwget} -p ${bgapt} -o pid=)" ]]; do
       sleep 1
       echo -en "${progress:${i}:1} \\b\\b"
       i=$((i % 4 + 1))
   done
источник

🌚

🌚 YupiRex in pro.bash
кусок кода , где паралельно идет закачка и установка, и цикл ждет пока это все закончится
источник

S

Snems in pro.bash
Я так понял, где-то блокируется stdout, отчего все проблемы. Мне надо было ограничить количество задач в бекграунде, т.е. чтоб из 50 задач запускалось не более чем по N одновременно. Пока сделал так:
if [ $(jobs | wc -l) -ge  ${_PARAM_PARALLEL_APPS_MAX} ]; then
     job_n=($(jobs -p))
     wait ${job_n[0]}
fi
источник

EK

Evgeny Kuchkov in pro.bash
кстати, интересное поведение. Может кто-нибудь объяснит?
root@mpro20y-rt-1:~# cat 1.sh
#!/bin/bash

sleep 5 &
while true; do
 echo $(jobs) && sleep 1
done

root@mpro20y-rt-1:~# ./1.sh
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Done sleep 5
[1]+ Done sleep 5
[1]+ Done sleep 5
[1]+ Done sleep 5
^C
источник

EK

Evgeny Kuchkov in pro.bash
если же демонизировать (sleep 5 &) & то будет так
root@mpro20y-rt-1:~# ./1.sh
[1]+ Running ( sleep 5 & ) &
[1]+ Done ( sleep 5 & )
[1]+ Done ( sleep 5 & )
[1]+ Done ( sleep 5 & )
[1]+ Done ( sleep 5 & )
[1]+ Done ( sleep 5 & )
^C
источник

🌚

🌚 YupiRex in pro.bash
проверяйте через ps
источник

🌚

🌚 YupiRex in pro.bash
( sleep 15)&( sleep 10 &); jobs; ps
источник

Е

Егоронька in pro.bash
А почему sh файлики больше не запускаются через ./ ?
источник

EK

Evgeny Kuchkov in pro.bash
да это понятно как решить задачу чела
источник

🌚

🌚 YupiRex in pro.bash
Егоронька
А почему sh файлики больше не запускаются через ./ ?
права +x есть?
источник

EK

Evgeny Kuchkov in pro.bash
просто интересно почему jobs зависает и постоянно пишет Done
источник

EK

Evgeny Kuchkov in pro.bash
наверняка этому есть объяснение
источник

Е

Егоронька in pro.bash
🌚 YupiRex
права +x есть?
Хм, наверное нет, а без них не заработает?
источник

EK

Evgeny Kuchkov in pro.bash
ЛОЛ
источник

🌚

🌚 YupiRex in pro.bash
правильно запускать процесс, правильно мониторить через ps
источник

🌚

🌚 YupiRex in pro.bash
Егоронька
Хм, наверное нет, а без них не заработает?
без них нужно предваритеоьно писать bash skript.sh
источник

EK

Evgeny Kuchkov in pro.bash
@YupiRex @Snems если интересно, то вот на стаковерфлоу ответили на мой вопрос
https://stackoverflow.com/questions/64928178/bash-check-job-is-finished
источник

🌚

🌚 YupiRex in pro.bash
ну по сути так и есть, джобы для пользователя, что бы пользователь не долбил ps
источник