Как стать автором
Обновить

Комментарии 88

Я думал вы будете описывать что-то типа лендскейпа.
Хотел спросить — как проверить существования процесса по имени/части имени.
НЛО прилетело и опубликовало эту надпись здесь
ps aux | grep имя_процесса
ps aux | grep имя_процесса | grep -v grep
иначе выдавать будет еще и греп, который ищет данный процесс
ps aux | grep [и]мя_процесса

а вообще, более правильно использовать для этого ps -C имя_процесса, ну или awk, а то нагрепать можно много лишнего
еще есть вариант избавления от grep в выводе:
pgrep <часть имени процесса>
Не нужно давать малообдуманных советов

$ ps aux | grep mc | grep -v grep
non7top 6986 0.1 0.0 12284 3900 pts/1 S+ 20:23 0:02 mc

$ ps aux | grep mc
non7top 6986 0.1 0.0 12284 3900 pts/1 S+ 20:23 0:02 mc
non7top 8293 0.0 0.0 11856 3544 pts/4 S+ 20:51 0:00 mc grep

[danial@cithadel ~]$ ps aux|grep mc
root 5814 0.0 0.0 50528 3488 pts/3 S+ 21:07 0:00 mc
danial 5822 0.0 0.0 10520 988 pts/1 S+ 21:07 0:00 grep mc
[danial@cithadel ~]$ ps aux|grep mc|grep -v grep
root 5814 0.0 0.0 50528 3488 pts/3 S+ 21:07 0:00 mc
Что не так?
разницу между 'grep mc' и 'mc grep' понимаем али нет? еще раз внимательно изучи мой предыдущий пост.
Куда же интересно исчез процесс самого grep?
Там есть race-condition, иногда ps axu | grep foobar процес самого grep-а не показывает.
И откуда получилось 'mc grep'?
Век живи — век учись. en.wikipedia.org/wiki/Command_line_arguments

ЗЫ отсутвие процесса самого grep нужно считать неумышленным недокопированием полного вывода. но там он абсолютно не важен, а важно немного другое.
Согласен, есть недостаток метода.
> важно немного другое
Простите, что?
для тех кто до сих пор не понял
'grep -v grep' скрывает не только 'grep mc', но так же и любую другую команду где есть 'grep'. если имя пользователя будет содержать эту подстроку то вообще забавно будет. пример я уже привел.
Да, это нельзя упускать из виду. Нельзя забывать как работает фильтр, используя его, а то потом можно долго разбираться «что не так»… %)
А так не короче?
ps -A | grep mc
6977 pts/0 00:00:00 mc
Я обычно использую такую команду: ps aux | grep -i имя_процесса, если руками набирать и глазами смотреть. вариант предложенный Optik использую в скриптах.
Мда… Затупил, извиняюсь :)
Я бы все-таки убрал из текста упоминание про «nmap localhost».
Гораздо разумнее воспользоваться помянутым «netstat -l», только добавить еще к нему:
* -A inet, чтобы выкинуть unix сокеты (а то их сильно много бывает)
* -p, чтобы видеть слушающий процесс (будут видны не все процессы, а только свои)
* -n, чтобы видеть цифири вместо буков там где порты (это по желанию)
Очень дельно, спасибо!
Я обычно использую набор
netstat -ntap.
Будут еще и установленные соединения.
А их на загруженном сервере может быть много.
НЛО прилетело и опубликовало эту надпись здесь
netstat -tupan
главное — легко запоминается, хотя работает только на линуксе. для юниксов нужно убрать -p
для просмотра процессов, пользуюсь htop
Да, еще с недавних пор использую atop, забыл упомянуть, правда он устанавливается отдельно, в то время, как top должен быть, пожалуй, в любой системе.
Практика показала, что в минимальном netinstall Дебиана его не было. Также там не оказалось killall и еще чего-то привычного :)
Отличная штука, лучше чем top во всех понятиях.
а на мой взгляд… htop лучший, а atop слишком сложен…
о, спасибо за программу) Очень приятная
+1

автор, добавте, плз., в статью
Добавил, спасибо, htop действительно великолепен! :)
Нестандартные наблюдения:
Кто занял порт и стал на нем слушать?
На самом деле процесс httpd или замаскированный shell на perll?
Какая наволочь грузит CPU на 100%?
Где делась память?
Кто свопит больше — httpd или mysqld?
Процессы-которые-сами-себя-удаляют-после-запуска и проблемы их нахождения через lsof

И прочие разные страшилки. Смотрите на лицензионных носителях сериал Сисадмины Хостенгофф тоже плачутъ. Официальный спонсор показа — Пяни. Реальне, сочне, настояще фрукте!
Кто занял порт и стал на нем слушать?
netstat -nap |grep [port_number]
а там httpd, хотя это perl
ку?
процесс — апач. перл это только его модуль, а значит показать его можно только встроенными в апач средствами и никак иначе. (например, используя server status)
По-моему товарищ имел в виду нечто другое. А именно: смотрим нетстатом и видим, что на порту висит процесс httpd. Успокаиваемся и идём спать. Не подозревая о том, что на самом деле это не апач, а перл-скрипт с именем httpd, лежащий, к примеру, в хомяке. Вопрос состоит в том, как это определить.
[root@carrot stolen]# netstat -lptn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:42060 0.0.0.0:* LISTEN -

И он не всегда признается, к сожалению.
НЛО прилетело и опубликовало эту надпись здесь
«Как там дела со свободным местом»
Что куда — mount.
Еще можно cat /proc/mounts
более удобно так:
mount | column -t
На каждый день? Не-не-не, вывод df-h я по крону проверяю =)
Можно не выходя из top убить процесс, просто жмем k, а потом PID номер.
Очень хорошо, что вы это описали.

Но всё же книга «Linux. Руководство системного администратора» в этом плане написана лучше. Извините за критику)

Дело в том, что начинающий системный администратор должен сначала понять принципы, на которых работает Linux.
А если использовать шаманские заклинания из двухсот букоф, которые рассказывают магические сведения — то при попытке понять, что это всё значит, волосы встанут дыбом. Так было у меня, так было у нескольких знакомых людей. Каждая новая команда вызывает культурный шок.

Поэтому изучение надо начинать с понимания «что» и «почему». Тогда все остальные вещи, типа расположения логов и мантры призыва netstat — будут очевидны и приятны. Каждая новая команда будет доставлять удовольствие, а весь процесс в целом — напоминать езду на дорогом хоошем автомобиле.
Абсолютно с Вами согласен! Совершенно! Только целевая аудитория, для которой я писал, не системные администраторы, а пользователи, которым приходится сталкиваться с базовыми задачами, но системно-сетевое администрирование для них не является профилирующей деятельностью. Могу привести примеры. :)
приведите, пожалуйста? я не троллю, правда интересно. вот зачем обычному пользователю может быть нужна команда ps в любом ее варианте?

есть такие предположения:

* этот «обычный пользователь» — уже не совсем обычный, а продвинутый. Он имеет на рабочем столе открытую консоль и знает разные умные команды.
* он не имеет возможности использовать графический режим. например, сервер очень слабый.
* управляет удаленно по SSH
* имеет какие-то умные скрипты по управлению процессами, которые написал кто-то другой.

и есть такая замена: ksysguard в графическом режиме, который заменяет эту, и еще пару десятков команд. Я настоятельно советую пользоваться ksysguard в графическом режиме — именно для этого она и писалась!

Просто если пользователю встретилась такая ошибка, что он вручную начинает отлаживать Ксорг… то через пару дней круглосуточного занятия этой познавательной задачей он рискует превратиться в нехилого такого сисадмина :)
Просто продвинутый пользователь, он же geek, или программист работает на портативном компьютере, а дома у него где-нибудь в кладовке стоит старая машина под многоцелевой сервер, который и файловым хранилищем и испытательным полигоном выступает. Жизнь усложняется, если эта железка видна в Сети…

Касательно конкретно ps. Довольно мощная программа, но не уверен, что нужно быть довольно продвинутым пользователем, чтобы иногда запускать консоль и что-то там набирать. Использование Linux это предполагает. Примерная ситуация была не так давно рассмотрена в блоге «Убунтариум».
а, ну у нас просто немного не соответствовали верхняя и нижняя планка «продвинутости».

я писал из предположения об основном пользователе Линукса, которого я поддерживаю: бухгалтерию и переводчиков. В их среде «продвинутым» считается тот, кто знает что такое «ip-адрес».

границы продвинутости приведены в соответствие.
Еще посоветую замечательный набор утилит sysstat.
в заголовке у вас «стандРАтных». наверное имелось ввиду «стандАРтных».
Oops, ничего себе, спасибо!
НЛО прилетело и опубликовало эту надпись здесь
killall также по имени снимает
НЛО прилетело и опубликовало эту надпись здесь
Главное не скормить ему аргумент «-v» в ожидании вербозного вывода. Он по аналогии с grep-ом «-v» интерпретирует как «--invert-match».

Соответственно pkill -v foobar убъет почти все, на что у пользователя хватит прав.
Сразу вспоминается, как мама в дестве говорила никогда не сидеть под рутом ;)
pkill убивает процессы, имя которых соответствует отданному регекспу. То есть, «pkill it» будет убивать инит.
А убийство по точному имени — killall.
НЛО прилетело и опубликовало эту надпись здесь
уважаемые а не подскажете, в top и uptime есть пункт загрузки системы: load average, в нем как я понимаю показываются процессы ждущие своего выполнения, считаются все процессы ждущие выполнения или только активные и как вообще правильно интерпретировать полученные данные?
интерпертировать так: если load average превышает число процессоров, в системе есть узкие места (система перегружена).
не обязательно узкое место может быть и в других ресурсах. надо его искать
… и в этом нам поможет dstat
все правильно, только скорее ядер, а не процессоров
цифра — это среднее число процессов, которые хотят выполняться но ждут пока проц. освободится. желательно чтобы была меньше чмсла процессоров.
А возможно ли установить слежение за изменением файла и когда это происходит отследить процесс который это делает?

Если говорить конкретнее, на сайте очевидно сидит какой-то червь и систематически дописывает в индексные файлы всякую хрень, админы хоста морозятся как могут (
вроде auditd умеет
В linux для этого подсистема *notify может использоваться.
Утилиты можно поискать на inotify-tools.sourceforge.net/
Можно про netstat поподробнее?
man netstat
;)
Спасибо, кое что новое узнал.

А как узнать сколько места занимает на диске директория с поддиректориями?
du
Например du -sh /path/to/dir/
Спасибо, кое что новое узнал.

А как узнать сколько места занимает на диске директория с поддиректориями?
du -sh
думаю стоит добавить еще /var/log/daemon.log и /var/log/debug.log если возникает трабла с сервисом каким — в половине случаев найдете тут.
Благодарю, добавил.
Спасибо сообществу за дельные дополнения и комментарии!
iostat -x 1 — понаблюдать за дисками
iotop (нужен свежий Python и вообще надо ставить) — понять, кто много кушает дисковой подсистемы
free — проверить не только память, но и свап
smartctl — проверить S.M.A.R.T. состояние дисков
dmidecode — узнать кучу интересного о железе
ss (нужны установленные iproute2) — аналог sockstat из BSD, иногда работает быстрее и надёжнее netstat
mii-tool — узнать, на каких сетевых интерфейсах есть линк
ethtool — узнать не только есть ли линк, но и на какой скорости и ещё кое-что
dstat туда же
показать память, процессор и многое другое с интервалом в 5 секунд
[alexbig@host ~]$ vmstat -S M 5
обновлять вывод любой команды раз в полторы секунды:
watch -n 1.5 df -h
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
раз написали про cups стоит упоминуть и samba
в etc/samba/smb.conf обычно указывается путь к log file = /var/log/samba.log.%m

Да, спасибо, как-то забылось после перехода на NFS…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории