Показаны сообщения с ярлыком *nix. Показать все сообщения
Показаны сообщения с ярлыком *nix. Показать все сообщения

воскресенье, 3 февраля 2013 г.

Centos 6, как удалить старые ядра или немного про малоизвестные способности yum

Как и вы, наверное, буквально сегодня обнаружил, что после установки обновлений в, например, CentOS 6, в меню загрузчика появляются все новые и новые ядра, такие ненужные в большинстве случаев. И сразу стало интересно, почему так, как бы их поудобнее удалить, и как вообще сделать, чтобы там их не было.

Конечно, это легко найти в Google, но ведь мало просто решить проблему, интересно разобраться во всем этом :)

Так вот, некоторые пакетики при апдейтах могут поддерживать фичу "installonly", то есть пакет не удаляется, не заменяется, а просто устанавливается. Очевидно, при этом критически важные файлы такого пакета ни с чем конфликтовать не должны. По-умолчанию yum считает такими пакетами все, что может содержать ядра, и по-умолчанию в CentOS настроено сохранять 5 последних версий ядра.
Очевидно, связано это с потенциальными проблемами с новым ядром и необходимостью сохранять старые версии. Однако, в большинстве случаев, когда обновления делаются руками и потом делается перезагрузка, умолчательные 5 последних версий как-то слишком уж избыточно (а для случаев ежедневных апдейтов без перезагрузки - как-то слишком уж мало, ведь ядро, скажем, за год, может обновиться раз 10, последнее загруженное ядро уже давно затрется).
В таком случае идем в /etc/yum.conf и правим там installonly_limit на какое-то другое число, после чего будет заметен позитивный эффект на число одновременно установленных версий ядра.
Однако, иногда просто хочется удалить лишние ядра, ничего не меняя. Для этого в пакете yum-utils (yum install yum-utils) есть нехитрая утилита package-cleanup:
# package-cleanup --oldkernels --count=2

И останутся только 2 последних ядра.


После всего этого всем интересующимся рекомендуется почитать man 5 yum.conf, где есть множество интересных и [бес]полезных опций, например, ограничение используемой пропускной способности сети, сохранение пакетов на локальном диске после установки и т.п. Ну и ознакомиться с пакетом yum-utils поближе.

вторник, 27 января 2009 г.

Почему GNU su не поддерживает группу "wheel"

Перевод статьи Why GNU su does not support the “wheel” group

(Из страницы руководства GNU su)

22.5.1 Почему GNU su не поддерживает группу “wheel”

(Эта секция написана Ричардом Столлманом.)

Иногда несколько пользователей пытаются удержать свою власть над всем. Например, в 1984, несколько пользователей в лаборатории искусственного интеллекта MIT решили отобрать власть путем смены пароля оператора на системе Twenex и хранили его в секрете от всех остальных. (Я был способен исправить это и вернуть власть пользователям путем исправления ядра, но я не знал, как сделать это в UNIX).
Однако, иногда правители пробалтываются. Используя обычный механизм su, когда кто-нибудь узнает пароль root и симпатизирует обычным пользователям, он или она могут рассказать остальным. "wheel group" делает это невозможным, и это цемент для власти правителей.
Я на стороне масс, а не правителей. Если вы регулярно поддерживаете боссов и сисадминов, что бы они не делали, вы можете найти эту идею немного странной.

суббота, 9 августа 2008 г.

Ubuntu

Подобно тому как некоторые люди в френдленте стали пользоваться Debian, я стал пользоваться Ubuntu.
Все началось с покупки ноутбука Dell Vostro 1400, на который ради интереса был установлен Ubuntu 8.04 Hardy Heron. В общем-то, полет нормальный. Все железо поддерживается из коробки, а что еще нужно? Suspend и Hibernate не вызывают нареканий, а рабочая среда, почти аналогичная debian позволяет не "переучиваться". )

В целом всем доволен, чего и вам желаю. )

Пришлось, конечно, причесать немного систему, но в основном это касается только приложений. Установил более привычные psi и amarok, заменил gnome-terminal на более быстрый rxvt, поставил vlc вместо totem, opera вместо firefox.

пятница, 11 июля 2008 г.

Убрать мусор в history, который добавляет mc

После применения предыдущего типса про "вечную" историю команд в bash, пользователи mc находят мусор в своих файлах истории. Мусором туда гадит mc.
Этот мусор выглядит примерно так:

414 mc
415 PROMPT_COMMAND='pwd>&7;kill -STOP $$'
416 cd "`printf "%b" '\0057home\0057stasikos\0057video\0057FLV\0057MOBILE'`"
417 cd "`printf "%b" '\0057home\0057stasikos'`"

Единственное избавление от этого - заигнорить те строки, которые он туда добавляет:
(в .bashrc)
export HISTIGNORE="&:ls:[bf]g:exit: cd \"\`*: PROMPT_COMMAND=?*?"


via коммент у Tigra.info

P.S. (UPD) а еще там же, у тигро.инфо, есть намного более красивое решение
export HISTCONTROL=ignoreboth

которое можно добавить как в .bashrc, так и в bashrc для mc, который находится в ~/.mc/bashrc. Это аналог "ignorespace + ignoredups", который не дает задваивать команды в history и не добавляет туда команды, начинающиеся с пробела.

Кстати, отсюда выплывает еще один типс - при включении этой опции в своем ~/.bashrc, можно намеренно поставить пробел перед командой и она не сохранится в истории. Вдруг она конфиденциальна. )

вторник, 1 июля 2008 г.

О перезаписи заголовков писем в exim4

Находим в конфиге два слова: "begin rewrite"
Добавляем туда строки:
<старый адрес> <новый адрес> [<флаги>]

Где <флаги> - указания, что перезаписывать. Если не указать, перезаписано будет все.
F - адрес в envelope-from
f - From:
r - Reply-To:
s - Sender:

Остальные флаги.

понедельник, 30 июня 2008 г.

Моя последняя лажа. )

Решил написать о своей недавней "лаже", не принесшей никаких неприятностей, кроме бессонной ночи.

Итак, все началось с идеи оптимизировать свой /, избавившись от фрагментации файлов. В случае ext3, да и вообще linux - единственный эффективный способ - забекапить все файлы, создать ФС заново и восстановить файлы на старое место.
А для проверки фрагментации можно использовать команду e2fsck. Общеизвестно, что запускать эту команду на смонтированной фс не стоит. Но, зная это, я все равно запустил. ) Спохватившись после слов "recovering journal", я ткнул Ctrl-C (может быть, это добавило некоторое удовольствие мне в последствии, кто знает). Это было моей первой ошибкой. )
В общем, решив продолжить дело, я взял рядом лежащий диск с Ubuntu, загрузился и сделал fsck еще раз, исправляя ошибки. Фрагментация оказалась на уровне 2.2%, что не так много-то в общем...
После чего, воспользовавшись tar, я полностью сбекапил / в tar.gz, сделал mke2fs -J /dev/hda1 и полез распаковывать tar.gz со старой корневой системой. И вот как-то незаладилось. Архив был объемом порядка 2ГБ, а распаковывалось (и без сообщений об ошибках!) всего около 380 мегабайт. Долгая ругань с товарищами с #linux кончилась тем, что я запустил cpio с очень подробными опциями, и оказалось что все заканчивается на забитых нулями блоках. Я все-таки смог пропустить их, используя dd, и скармливая поток через пайп тому же cpio. Теперь, вроде-бы, распаковалось все и я даже смог загрузиться.
В чем же была моя вторая ошибка? Да элементарная - я не проверил созданную копию. )
Ну далее дело оказалось не очень хитрым - загрузился в новую систему, заметил, что часть библиотек и бинарников, в общем-то, отсутствует, и повреждена. Помог debsums - он показал, как и то чего нет, так и то что повредилось. aptitude reinstall восстановил все поврежденные файлы и система стала рабочей. Я же запомнил эти уроки, надеюсь, на всю жизнь.

воскресенье, 29 июня 2008 г.

Листинг имен файлов по маске горячей клавишей в bash

как-то захотелось просмотреть абстрактный jpeg из домашнего каталога программой display.

Ну, как обычно, тыкаю
$ display <tab>

И понимаю, что что-то тут не так, и выбирать из 200-300 файлов любой жпег не очень-то удобно.

Роемся в man bash. )

$ display *.jpg<Esc-g>

(или Alt-g, или Ctrl-x, g - для просто списка без дополнения)

Нажатием Ctrl-x * можо и вовсе вместо табкомплита поместить все имена файлов по маске в командную строку.

среда, 25 июня 2008 г.

Target filesystem doesn't have sbin/init

Первое, что стоит проверить в этой ситуации - это правильность параметра root= в загрузчике.
Второе - имеется ли /sbin/init в системе вообще.
Все остальное - потом.

(навеяно попытками поставить usplash|uswsusp в Debian Sid, в процессе пробы pm-utils)

пятница, 13 июня 2008 г.

Получить статистику ping без завершения работы команды

Обычно, если не указывать значение параметра -c, ping посылает icmp echo до тех пор, пока не будет завершен, например, с помощью Ctrl-C:

0):stasikos@zombie:~$ ping ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=57 time=760 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=57 time=703 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=4 ttl=57 time=2391 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=5 ttl=57 time=1465 ms

--- ya.ru ping statistics ---
6 packets transmitted, 4 received, 33% packet loss, time 5399ms
rtt min/avg/max/mdev = 703.354/1329.923/2391.067/682.176 ms, pipe 3


Но однажды мне захотелось странного. Поставить ping с интервалом поболее, да на долгое время, чтобы оценить этот самый packet loss в больших масштабах. Ну и смотреть статистику, не тыкая каждый раз ctrl-c и не перезапуская его снова.


"Shorter current statistics can be obtained without termination of process with signal SIGQUIT." - гласит man ping. Посему...
0):stasikos@zombie:~$ ping -q -i 2 ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.
(^Z)
[1]+ Stopped ping -q -i 2 ya.ru
1):stasikos@zombie:~$ bg %1
[1]+ ping -q -i 2 ya.ru &
1):stasikos@zombie:~$ kill -QUIT %1
6/2 packets, 66% loss, min/avg/ewma/max = 609.963/740.967/839.220/871.972 ms

Опцию q я указал, чтобы строки, которые выводит ping, не мешали работе в шелле, пока ping работает в фоне.

четверг, 12 июня 2008 г.

Kак узнать или изменить свой uid в linux

UID - это уникальный в пределах системы идентификатор пользователя. Представляет собой целое число.


Узнать его можно многими способами:
$ id 
uid=1000(stasikos) gid=1000(stasikos) группы=8(mail),20(dialout),24(cdrom),25(floppy),29(audio),44(video),
46(plugdev),1000(stasikos)
s

uid=1000 дает нам полное знание о собственном uid ).
$ id root
uid=0(root) gid=0(root) группы=0(root)

эта же команда дает нам возможность узнать и чей-то еще uid.
UID = `id -u`

В скрипте значение только текущего uid можно получать именно таким способом.


Кроме того, uid хранится в /etc/passwd:
$ getent passwd | grep stasikos
stasikos:x:1000:1000:Stanislav V. Kogut,,,:/home/stasikos:/bin/bash


Для изменения uid пользователя нужно воспользоваться командой usermod:
# usermod -u 1099 test


Но если все-таки uid пользователя в системе изменился вручную через редактирование /etc/passwd, это можно исправить, сделав пользователя владельцем его старых файлов и каталогов, которые ранее принадлежали этому пользователю, станут чужими, поэтому их нужно будет передать ему снова:

# find / -uid $OLD_UID -exec chown $username {} \;

Впрочем, эта команда может спасти и в случае, если пользователь владеет файлами за пределами своего домашнего каталога.


Задать uid при создании пользователя можно, указав ключ --uid для команды adduser.


P.S. А нафига это все? А это так, чтобы посмотреть, часто ли этот вопрос кого-то интересует.

четверг, 5 июня 2008 г.

Опять GRUB и двойная загрузка

Давеча вопрос задали: на одной машине с Dual Boot Linux/Windows XP произошло странное. Вдруг ни с того, ни с сего выбор загрузки Windows XP заканчивался мертвым повисанием. Linux так же, как и раньше, загружался без проблем. Fixboot+Fixmbr с выносом Grub совершенно ничем не помогал - теперь оно висло при самой загрузке Windows.
Как оказалось, лечится это проще простого. )
Нужно было опять переключить в настройках BIOS жесткий диск из режима Auto в Large.
С чем это связано - хз, думаю как-то коряво GRUB при установке в другом режиме работает с секторами.

воскресенье, 25 мая 2008 г.

Debian-Way установка Google Earth

Казалось бы, можно как и предлагает Google, установить это приложение прямо из GoogleEarthLinux.bin, но это не отражает правильного поведения в случае Debian-Like дистрибутивов. Во-первых, это приведет к установке в систему файлов, не отслеживаемых пакетным менеджером, во-вторых это может быть неудобным, если вам хочется установить это приложение на много однородных систем и регулярно обновлять его. В-третьих, для установки этого приложения в Debian есть специальный способ.


Итак, что же надо сделать, чтобы установить Google Earth?

1. Необходимо установить утилиту для создания пакетов .deb из его инсталлятора:
$ sudo aptitude install googleearth-package

2. Необходимо скачать оригинальный .bin дистрибутив с google.com:
Перейти на страницу загрузки

3. А теперь надо натравить (1) на (2)!

$ make-googleearth-package --file /tmp/GoogleEarthInstaller.bin

Впрочем, можно попробовать и пропустить шаг 2 - утилита может скачать установщик самостоятельно.

В итоге всех манипуляций, мы получим что-то похожее на "googleearth_4.3.7204.836+0.5.4-1_i386.deb", который можно устанавливать в систему, выкладывать в свой репозитарий (для внутреннего пользования) и т.д.

суббота, 24 мая 2008 г.

Смена CPU Affinity - привязки процесса к процессорам в SMP-системе

Давеча этот вопрос был задан, но ответ не сразу нашелся даже в google.
Суть его - как заставить процесс использовать не все процессоры, а только определенные? Для этого в SMP существует понятие "CPU Affinity Mask".
Для этого существует утилита taskset, входящая либо в пакет util-linux, либо schedutil.

taskset 0x00000001 command

заставит команду использовать только 1-й процессор системы

Вместо битовой маски можно использовать и просто список процессоров, а используя ключ -p - менять маску для уже запущенных процессов:
taskset -c 0,3 -p 12345

среда, 21 мая 2008 г.

Как не терять историю команд?

Часто бывает, что мы пользуемся шеллом одновременно из нескольких открытых окон терминала. При этом не менее часто бывает, что удобную и длинную команду из истории шелла из одного терминала случайно затерла история шелла из другого терминала. Избежать этого может помочь добавление следующих строк в .bashrc:



shopt -s histappend
PROMPT_COMMAND='history -a; history -n'





Первая опция заставляет шелл не перезаписывать файл истории, а добавлять записи в него. Вторая команда будет вызывать добавление содержимого истории в файл и перечитывание файла истории сразу при выводе приглашения командной строки, а не после выхода из шелла.



("Кросспост" с Полезные советы по Linux)

суббота, 10 мая 2008 г.

X.org 7.3, Debian Sid и клавиатура

После aptitude upgrade неожиданно обнаружил, что в иксах перестали работать старые комбинации клавиш (Ctrl-Alt-F1, например, гг). В поисках проблемы наткнулся на пакет xkb-data-legacy, который заменяет новый xkb-data - это решает проблему.

Но позже adjkerntz с #linux подсказал, в чем проблема - дело в том что вариант winkeys из новой версии xkb-data убрали, поэтому XkbVariant из конфига надо убирать.

Итак, я снова установил xkb-data и стер ",winkeys" из конфига xorg.conf - и полет нормальный!

понедельник, 31 марта 2008 г.

Обзор ресурсов для сисадминов *nix и просто гиков.

Linux
http://linux.org.ru - есть замечательный раздел http://www.linux.org.ru/books и там можно найти LOR FAQ, за который этот ресурс и удостоился помещения сюда. Также можно глянуть http://www.linux.org.ru/view-section.jsp?section=4, где есть еще немножко ссылок.

http://tldp.org - официальный сборник документации по Linux (The Linux Documentation Project), где можно найти HOWTO на многих языках, включая русский.

http://www.unix.org.ua - здесь есть неплохой раздел документации на русском языке на различные тематики.

http://gentoo-wiki.com - сборник документации по Gentoo Linux, есть и русский раздел.

http://citkit.ru/ - много разной информации. Не только по *nix

http://linuxforum.ru/ - русский форум пользователей Linux

http://www.lfwiki.ru/Заглавная_страница - неплохой сборник всяких HOWTO на русском.

http://rusmafia.org/linux/ - сборник советов по Linux, BSD и другим. Дружественный мне проект, ибо участвую с первых дней.

UPD: http://lartc.org - Linux advanced routing and traffic control howto - известный ресурс и дока по возможностям маршрутизации и шейпинга в Linux. (via ).

UPD: http://runix.org - портал с множеством русских блогов по *nix. (via dandr)

Ресурсы по Debian GNU/Linux

http://wiki.debian.org/ - официальный Debian Wiki. Ну, все говорит само за себя.

http://www.debian-administration.org/ - это ресурс (к сожалению, англоязычный), на котором можно найти огромное множество советов по администрированию Debian GNU/Linux.

http://www.uptimebox.ru/ - "Прикладная дебианавтика" - еще один блог сисадмина, работающего с Debian. Пишет свои обзоры, мысли, почитать интересно.

http://beshenov.ru/debaday - "Пакет дня Debian" - задумывался изначально как обзор какого-нибудь одного пакета из репозитария в каждой статье. Иногда попадается ну очень интересный софт. Является переводом другого блога -

http://debaday.debian.net/ - "Debian package of a day"

Юмор
http://ru.thedailywtf.com/ - сборник разных курьезных историй (точнее их переводов).

понедельник, 9 июля 2007 г.

FluxBox, Opera, перевод выделенного текста

Горячая клавиша для fluxbox и opera - открыть перевод выделенного слова в браузере

Mod4 t :Exec opera -newpage \
"http://www.lingvo.ru/lingvo/Translate.asp?LingvoAction=translate&words=\
`xclip -o`"

вторник, 19 июня 2007 г.

Еще один скрипт из /usr/local/bin

Родил в страшных муках настраиваемый скрипт для офисного почтового сервера с smtp через smarthost и imap для пользователей. Чтобы старую почту архивировать. Раньше работало куда более криво, ныне вот так. (единственное - запарился mbox-ы в файл прописывать)
#!/bin/bash

OPATH="/var/archives/mail"
for i in `cat /etc/mailboxes | awk '{ printf "%s|%d\n", $1, $2} '`; do
 MPATH=`echo $i | awk -F '|' '{print $1}'`
 DAYS=`echo $i | awk -F '|' '{print $2}'`
 OWNER=`stat -c %U $MPATH`
 PSUFFIX=`dirname $MPATH`
 if [ ! -d "$OPATH$PSUFFIX" ] ; then 
  mkdir -p "$OPATH$PSUFFIX"
 fi
 chmod 700 "$OPATH$PSUFFIX"
 chown $OWNER:mail "$OPATH$PSUFFIX"
 archivemail -d $DAYS -o "$OPATH$PSUFFIX" "$MPATH"
done

понедельник, 30 апреля 2007 г.

MPlayer DVD Menu

То, что MPlayer поддерживает меню DVD, является заблуждением. Проверено на себе. Она неполноценная. Или у вас GUI, или меню. А вот в Xine она работает.

среда, 11 апреля 2007 г.

Красивый процесс загрузки системы )

Выполнить от рута:
sed -e '/id/ s/:[0-9]:/:6:/' /etc/inittab > /etc/inittab.new ; mv /etc/inittab.new /etc/inittab

Таки так кроссплатформеннее:
stasikos@dpmmsrv:~$ cat b_bootsplash 
#!/bin/sh
# adds nice bootsplash to your system 

SYS=`uname -s`

if [ "$SYS" = "Linux" ] ; then 
  sed -e '/id/ s/:[0-9]:/:6:/' /etc/inittab > \
  /etc/inittab.new ; mv /etc/inittab.new /etc/inittab
  exit 0
fi


if [ "$SYS" = "FreeBSD" ] ; then
  echo /sbin/shutdown -r now >> /etc/rc.local
  exit 0
fi