tips

 

Определение размера swap использованого процессом

Стандартные консольные утилиты linux не показывают количество памяти процесса выгруженой в подкачку (swapped out).

Однако есть достаточно простой способ узнать это. Все что для нужно - взять идентефикатор процесса (PID) и просмотреть файл smaps относящийся к этому процессу:

cat /proc/<pid процесса>/smaps | grep Swap

Эта команда выдаст кучу строк, отосящихся к разным сегментам памяти. Чтобы просуммировать все можно воспользоваться awk:

cat /proc/<pid процесса>/smaps | grep Swap | awk '{ SUM += $2 } END { print SUM }'

Приведение RHEL/CentOS к привычному виду

RHEL/CentOS - весьма неплохая серверная ОС, однако мне, привыкшему к Gentoo весьма неудобно с ней работать. Поэтому я написал для себя инструкцию, которую я применяю к отдельно стоящим серверам, которые попадают ко мне.

Итак, вот она:

Кто я и где я:

# cpu:
cat /proc/cpuinfo
# disks:
df -h
sudo /sbin/fdisk -l
/usr/sbin/vgdisplay
/usr/sbin/lvdisplay
sudo /sbin/hdparm -tT /dev/sda
# devices:
sudo /sbin/lsusb
sudo /sbin/lspci
# memory
vmstat

Создание пользователя

Негоже пользоваться root'ом.

Зайти root'ом:

Denyhosts - блокировка перебора паролей ssh

Denyhosts - весьма полезная утилита для пресечения попыток подобрать пароль к ssh.

Устанавливается без каких-либо проблем: emerge denyhosts в Gentoo, для других дистрибутивов пакеты также существуют и как правило находятся в основном репозитории.

Denyhosts работает следующим образом: он проверяет логи и добавляет в /etc/hosts.deny ip адреса, с которых наблюдается много попыток неудачного входа. Для того чтобы это работало, ssh должен быть собран с tcpwrappers (что всегда разумно и делается по умолчанию).

Как изменить настройки сетевой карты в linux

Вопрос: Как отключить авто-определение сетевых настроек (auto-negotiation) моего серевого интерфейса и установить полу/полно-дуплексный режим из коммандной строки? Как просмотреть текущие настроки?

Используйте ethtool:

ethtool eth0 # показывает текущие настройки

Пример вывода:

Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes

vi: как вставить в текущий документ вывод любой команды

Очень просто.

Достаточно набрать ":r!<команда>" в командном режиме vi. Это особенно удобно при написании каких-либо отчетов.

© UNIX HOT TIP 2795 - August 28, 2007, http://www.ugu.com/sui/ugu/show?tip.today

GNU Screen: как "промотать" окно вверх

Screen - очень полезная и удобная утилита. Но при ее использовании часто возникает вопрос: как просмотреть что-то что произошло раньше и не влезает в экран. Стандартные Ctrl+PageUp не работают.

Для того чтобы решить эту проблему, нужно перевести screen в режим копирования сочетанием клавиш Ctrl + a, [ или Ctrl + a, Esc.

После этого можно перемещаться стандартными стрелочками или следующим способом:

h - Передвинуть курсор влево
j - Передвинуть курсор на строку вниз
k - Передвинуть курсор на строку вверх
l - Перевинуть курсор вправо

[злоба] PATH в RHEL

Не знаю, специално это или нет, но то что в rhel после sudo в PATH не попадают /sbin и /usr/sbin жутко бесит.

Пожалуй стоит завести списочек того, что нужно сделать в свежей rhel-системе, чтобы ей можно было относительно нормально пользоваться.

  1. Завести себе пользователя с publickey аутентификацией
  2. Установть screen и lsof из epel.
  3. Установить denyhosts
  4. Добавить в PATH /sbin и /usr/sbin
  5. alias ls=ls --color=auto

Смена регистра имен файлов

Для того чтобы быстро сменить регистр файлов из верхнего регистра в нижний, можно воспользоваться следующим скриптом:

##############################
for file in *
do
 mv $file `echo $file | tr [:upper:] [:lower:]` 2>/dev/null
done
##############################

© UNIX tip #2741

Выполнение команд на нескольких машинах (ssh)

Если вы являетесь администратором достаточно большого количества unix-машин, то наверняка вам приходилось сталкиваться с необходимостью выполнить пару команд на всех ваших машинах. Для упрощения этого есть несколько методов.

Первый - самый простой и примитивный. Он использует только bash, и не требует установки дополнительного софта.
Предположим, что у нас есть машины gmos-1, gmos-2, gmos-3 и т.д. и мы хотим выполнить emerge --info на них всех. Вот что мы можем сделать:

for i in `seq 10`; do ssh gmos-$i "emerge --info"; done

Как заставить пользователя сменить пароль при следующем логине

  1. Сначала, заблокируйте аккаунт для того, чтобы предотвратить его использование, пока не будут внесены изменения.
    usermod -L username
  2. Измените дату окончания действия пароля в 0, для того чтобы заставить пользователя сменить его при следующем логине:
    chage -d 0 username
  3. Разблокируйте аккаунт.
    usermod -U username