В то время как disown
может иметь побочный эффект глушения сообщения; это то, как вы запускаете процесс таким образом, что сообщение действительно отключается, не отказываясь от контроля над процессом.
{ command & } 2>/dev/null
Если вам все еще нужен собственный stderr команды (просто отключение сообщения оболочки на stderr), вам нужно отправить stderr процесса реальному stderr:
{ command 2>&3 & } 3>&2 2>/dev/null
Чтобы узнать, как работает перенаправление:
И, кстати; не использовать kill -9
.
Я также чувствую себя обязанным прокомментировать ваше:
ps ax | grep sleep | grep -v grep | awk '{ print $1 } ' | xargs kill -9
Это поймает взгляд любого пользователя UNIX / Linux с подсказкой. Более того, каждый раз, когда вы разбираете ps
, фея умирает. Сделайте это:
kill $!
Даже такие инструменты, как pgrep
, по сути, сломаны. Хотя они лучше справляются с процессами сопоставления, фундаментальные недостатки все еще присутствуют:
- Гонка. К тому времени, когда вы получаете вывод PID, анализируете его и используете его для чего-то другого, PID, возможно, уже исчез или даже был заменен совершенно не связанным процессом.
- Ответственность: В модели процесса UNIX родитель должен управлять своим потомком, и никто другой не должен. Родитель должен сохранить PID своего ребенка, если он хочет иметь возможность сигнализировать об этом, и только родитель может надежно сделать это. Ядра UNIX были разработаны с учетом того, что пользовательские программы будут придерживаться этого шаблона, а не нарушать его.