@GashhLab
НИУ МЭИ, информатика и вычислительная техника

В чем разница между ps axu и ps cax?

Хочу сделать так, чтобы когда мой телеграм бот вылетал, он снова запускался автоматически. Начал писать bash скрипт. Для начала нужно проверить, запущен ли такой процесс. Я хотел это сделать так:
#!/bin/bash
bot_pid=`cat /home/vladimir/bot_dir/pid.txt`
echo $bot_pid
ps axu | grep $bot_pid
if [ $? == 0 ]; then echo "Bot is working"
elif [ $? == 1 ]; then echo "Bot is dead"
fi

После этого я залез в интернет и нашел почти точно такой же код, только там была использована команда ps cax. Почему не работает мой вариант я уже понял - он просто находит свой же запрос в списке, получает 0 и говорит, что бот работает. Я пытался загуглить, что делает параметр c, но всё равно не понимаю, почему этот вариант вдруг сработал.
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 2
BorLaze
@BorLaze
Java developer
Вообще-то, это лучше делать через systemd

PS: Недолгое гугление показывает, что выяснить, работает ли процесс с данным pid можно командой
ps -p $bot_pid -o comm=

0 - работает (возвращает команду), 1 - такого процесса нет
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
man ps
неужели так сложно поискать что делает опция c и u?
одна выводит команду целиком, другая user-oriented

Но вообще если у вас уже есть PID файл, то лучше
ps -p $(cat /home/vladimir/bot_dir/pid.txt)
if [ $? == 0 ]; then echo "Bot is working"
elif [ $? == 1 ]; then echo "Bot is dead"
fi
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы