'jobs' показывает несуществующий процесс как работающий

Лучшее, что я могу придумать, это:

 DEBIAN_FRONTEND=noninteractive apt remove --purge -yq mariadb\*
 rm -rf /var/lib/mysql 

ПРЕДУПРЕЖДЕНИЕ :Это может быть опасно.

2
01.02.2021, 20:15
1 ответ

FWIW, я могу воспроизвести ваш случай с:

rhel8$ /bin/jobs(){ jobs -l; }
rhel8$ sleep 1 | sleep 3600 &
[1] 2611
rhel8$ sleep 2
rhel8$ jobs
[1]+  Running                 sleep 1 | sleep 3600 &
rhel8$ /bin/jobs
[1]+  2610 Running                 sleep 1
      2611 Running                 | sleep 3600 &
rhel8$ pgrep 2610
    <nothing!>
rhel8$ ls /proc/2610
ls: cannot access '/proc/2610': No such file or directory
rhel8$ /bin/jobs
[1]+  2610 Running                 sleep 1
      2611 Running                 | sleep 3600 &
rhel8$ cat /bin/jobs
#!/bin/sh
builtin jobs "$@"

Или с (еще ламернее предыдущего):

rhel8$ unset -f /bin/jobs
rhel8$ export JOBS=$(jobs -l)
rhel8$ builtin(){ echo "$JOBS"; }
rhel8$ export -f builtin
rhel8$ /bin/jobs
[1]+  2610 Running                 sleep 1
      2611 Running                 | sleep 3600 &
rhel8$ type /bin/jobs
/bin/jobs is /bin/jobs

Примечание :Как уже было продемонстрировано, jobs -lв bash отображает устаревшую информацию, а конвейерные процессы, которые уже завершились, по-прежнему отображаются как Running. ИМХО, это ошибка --другие оболочки, такие как zsh, ksh или yash, правильно отображают их как Done.

1
18.03.2021, 22:33

Теги

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