Переименование процесса bash в backgroung (forked) с использованием его PID

На моем компьютере Ubuntu linux я делаю такой цикл, используя мой shell bash

ЗДЕСЬ МОЙ КОД "./upperscript"

cat filename.txt | while read LINE || [[ -n $LINE ]];
do
    ./script $LINE >> $LINE.txt 2>> $LINE.err & sleep 1
    wait;
done > /dev/null 2>&1 &
echo "[PID $!]"

Вот так

Теперь, когда скрипт исчезает, появляется много форкнутых процессов (по одному) с именем -bash вот так

username    15029  0.0  0.3   7404  3060 ?        S    mag31   0:00 -bash
username    13849  0.8  0.6  33048  6432 ?        S    mag31   0:08  \_ ./script HERE MY LINE
username    13869  0.1  0.3  33048  6451 ?        S    mag31   0:09    \_ ./otherscript HERE MY LINE
username    13881  0.1  0.1  33048  6465 ?        S    mag31   0:08    \_ ./otherscript HERE MY LINE

как переименовать процесс с pid 15029, чтобы теперь он назывался просто "-bash"?

Я пытался также

$ chmod 777 /proc/15029/comm
chmod: changing permissions of '/proc/15029/comm': Operation not permitted

сделать это

echo 'PROCESSNAME' > /proc/15029/comm"

но, как вы видите, ошибка

"Операция не разрешена" также используя sudoers имя пользователя или root (su)

если нет способа, могу ли я переименовать его из самого процесса?

Говоря, используя

bash -c "exec -a <MyProcessName> <Command>"

в многострочной команде, как я сейчас?

Спасибо большое

3
задан 5 June 2021 в 04:42

3 ответа

У меня такая же проблема. Мы не можем этого сделать

echo 'PROCESSNAME' > /proc/15029/comm"

Это вопрос привилегий

1
ответ дан 28 July 2021 в 11:33

Вот простой способ, как достичь того, что вы хотите:

  1. Поместите ваш код в исполняемый файл.
  2. Для каждого форка создайте символическую ссылку на этот файл.
  3. Выполните символьную ссылку вместо исходного файла.

Ссылка:

0
ответ дан 28 July 2021 в 11:33

Быстрая демонстрация использования wait :

a_script.sh:

#!/bin/bash
i=5
while ((i--)); do
    $PWD/b_script.sh >> output
    sleep 2
done &
p=$! # because we just have one background
     # process this isn't really necessary.
echo Lets wait for all scripts to end.
read -p \
"meanwhile pick a number, fast! " n && echo you picked: $n
echo back to waiting...
wait $p
echo All done\!

b_script.sh:

#!/bin/bash
echo b_script | ts
0
ответ дан 28 July 2021 в 11:33

Другие вопросы по тегам:

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