/proc/PID/cwd: когда процесс работает не из того каталогаУ каждого Linux-процесса есть текущий рабочий каталог. Обычно мы видим его через shell, но для уже запущенного процесса можно посмотреть напрямую через
/proc.readlink /proc/1234/cwd
Например:
/var/lib/app
Это каталог, относительно которого процесс разрешает относительные пути.
▪️Найти процессы с неожиданным
cwdfor p in /proc/[0-9]*; do
pid=${p##*/}
cwd=$(readlink "$p/cwd" 2>/dev/null) || continue
printf '%-8s %s\n' "$pid" "$cwd"
done
Теперь можно быстро увидеть, какие процессы находятся в
/tmp, /dev/shm, домашних каталогах или других необычных местах.▪️Почему это может быть важно
Приложение может запускаться из:
/opt/myapp
но после работы оказаться в другом каталоге из-за
chdir().Особенно интересны процессы с:
/tmp
/dev/shm
/home/user
если для конкретного сервиса такое поведение не ожидается.
▪️Связь с systemd
Для unit можно задать:
[Service]
WorkingDirectory=/var/lib/myapp
А фактическое значение уже запущенного процесса проверить через
/proc.Это полезнее, чем тупо смотреть конфигурацию:
/proc/PID/cwd показывает состояние конкретного процесса прямо сейчас.BashTex 📱 #bash #proc