Pull to refresh

Comments 88

Я думал вы будете описывать что-то типа лендскейпа.
Хотел спросить — как проверить существования процесса по имени/части имени.
UFO landed and left these words here
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.
Будут еще и установленные соединения.
А их на загруженном сервере может быть много.
UFO landed and left these words here
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 -

И он не всегда признается, к сожалению.
UFO landed and left these words here
«Как там дела со свободным местом»
Что куда — 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, ничего себе, спасибо!
UFO landed and left these words here
killall также по имени снимает
UFO landed and left these words here
Главное не скормить ему аргумент «-v» в ожидании вербозного вывода. Он по аналогии с grep-ом «-v» интерпретирует как «--invert-match».

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

Если говорить конкретнее, на сайте очевидно сидит какой-то червь и систематически дописывает в индексные файлы всякую хрень, админы хоста морозятся как могут (
Можно про netstat поподробнее?
Спасибо, кое что новое узнал.

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

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

Да, спасибо, как-то забылось после перехода на NFS…
Only those users with full accounts are able to leave comments. Log in, please.