dil: (Default)
2017-04-12 12:56 pm

Как узнать, когда в линуксе запускалась команда?

Как известно, список команд, запускаемых пользователем из командной строки, сохраняется bash’ем в файле ~/.bash_history . Но там они записываются просто в порядке запуска, а когда конкретно они запускались, неизвестно.

Внезапно обнаружилось, что информацию о времени запуска добавить очень просто, а она бывает очень полезна в процессе расследования всяких хаков и глюков.
Надо просто приделать к bash’у переменную HISTTIMEFORMAT – через /etc/profile, /etc/bash/bashrc, или персональные ~/.bashrc и ~/.profile:
export HISTTIMEFORMAT='%F %T '

Значение HISTTIMEFORMAT влияет только на формат вывода даты/времени при запуске history, его можно поменять в любой момент. Главное, чтоб при запуске bash’а эта переменная была хоть как-то определена, и тогда в .bash_history будут подписываться timestamp’ы:
#1491997427
cat .bashrc
#1491998079
tail .bash_history

и вот как посмотреть дату и время этих команд:
$ date -d '@1491997427'
Wed Apr 12 12:43:47 IST 2017
$ date -d '@1491998079'
Wed Apr 12 12:54:39 IST 2017

Оригинал этой записи в личном блоге.

dil: (Default)
2012-05-09 02:59 pm

Нарочно не придумаешь

На ITшных собеседованиях любят задавать задачку: что делать, если в директории так много файлов, что попытка применить rm * (и даже ls *2012*) натыкается на ограничение длины  командной строки.

Я раньше думал, что задачка чисто умозрительная. Фиг там. Сегодня я случайно нашёл директорию, в которой лежало более ДВУХСОТ ТЫСЯЧ файлов. ls на ней задумывался навсегда, потому что по умолчанию пытался их отсортировать по алфавиту. du думал секунд двадцать.

Файлики туда добавлялись постепенно. Много лет. Каждый день по несколько десятков. И файловая система не сдохла. UFS на солярке.

Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.

dil: (Default)
2010-10-21 10:03 pm

Яндекс.олимпиада. Грабельки содержательные

Грабли начинаются прямо с названия: “Олимпиада для Unix администраторов”. А на деле существенное количество вопросов было линукс-специфичными:

Как в Linux узнать текущий рабочий каталог процесса с pid = 4556?

Вы зашли на сервер с Linux с помощью ssh. Как перегрузить этот сервер по sysrq-b?

Как в Linux смонтировать файловую систему tmpfs размеров 2Гб в /tmpfs?

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

Несколько вопросов, причём очень узконаправленных, зачем-то было про базы данных, хотя DBA – это вообще отдельная профессия:

Какие из перечисленных типов хранилищ в MySQL поддерживают транзакционность:  MyISAM, Memory, InnoDB, Archive, NDB, CSV?

Как в PostgreSQL очистить файлы баз данных от уже удалённых записей?

Ну вот нафига администратору _UNIX_ это знать?

Некоторые вопросы были сильно надуманные:

Напишите чему будет равен mss, если Вы используете IPv6 и mtu=1450?

Вот сколько лет работаю администратором, а с IPv6 на практике ни разу не встречался. А уж такие тонкости, как размер служебных полей и подавно наизусть не помню.

Или вот Как в терминале bash при помощи одной служебной комбинации клавиш слово dpgk превратить в dpkg, если курсор стоит на букве k?

Ну положим, есть там какая-то хитрая комбинация, которая переставляет буквы местами, но зачем оно на практике нужно? Быстрее будет одну букву стереть и набрать заново. И кто бы мне рассказал, что такое “терминал bash”, а?

Но это бы ещё ничего. Наиболее существенная проблема — в некорректной или неоднозначной формулировке вопросов. Прежде чем отвечать, надо было сначала догадаться, чтО имели в виду организаторы, задавая вопрос. Вот, например:

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

Ответ >= по мнению организаторов неправильный. Его засчитали только на апелляции, после демонстрации его работы. А подразумевался, вероятно -ge, только он ни разу не от bash, а от программы test, она же [. И использовать её, понятное дело, можно вовсе не только в bash.

Или вот: Как в Unix посмотреть какие файлы или устройства использует процесс с pid = 85003?

Ответ ls -l /proc/85003/fd не засчитали. Потому что, как написали организаторы,  "Мы принимали ответы на вопрос 6:
1. Для Linux: никак или в ответе должно было быть упоминание, что это можно сделать с помощью дополнительной настройки ядра, например, sysctl -w kernel.pid_max = (число > 85003). По умолчанию значение переменной kernel.pid_max = 32768;

Но вопрос-то был не про то, как сделать возможным такой номер процесса, а про то, как посмотреть на открытые им файлы. Естественно предположить, что процесс уже есть, иначе и смотреть не на что. А вот под ж ты, надо было догадаться, что они хотели с упоминанием. И этого одного балла мне как раз не хватило для попадания в следующий тур. И спорить уже не дозволено, ответ пришёл после закрытия апелляций.

2. Для FreeBSD: fstat -p 85003 или установить lsof, а потом посмотреть с помощью lsof -p 85003. Утилиты lsof и procfs по умолчанию не установлены;

Ага, а ещё можно самому написать ядрёный модуль и программу, которая с его помощью  будет извлекать нужные данные из внутренних структур. Я писал когда-то аналогичную штуку для FreeBSD.

3. В для Solaris мы принимали ответ, что можно сделать с помощью утилиты pfiles.". А теперь угадайте, который из вышеперечисленных трёх ответов хотели увидеть организаторы. Или все три сразу.

Как очистить лог-файл /var/log/log, открытый работающим процессом?

Что значит “очистить”? Удалить и создать новый — считается? А что, файл /var/log/log есть, очищенный, задача выполнена. Подразумевалась, вероятно, операция truncate, но как об этом догадаться?

Как посмотреть версию и возможные параметры модуля e1000e для загруженного в настоящий момент ядра в Linux?

Я этот вопрос понял так: “как посмотреть, с какими конкретно параметрами, если они были указаны,  загружен работающий в настоящий момент модуль”. И написал про /sys/module/e1000e/parameters/. А оказывается, имелись в виду вообще все возможные параметры, а правильный ответ — modinfo.

Какова последовательность пакетов tcp при установке соединения (укажите типы пакетов)?

Угадайте какие могут быть “типы пакетов” в TCP? Ответ про SYN/SYN+ACK/ACK был засчитан, но это же флаги, а  никакие не типы.

Какой параметр ядра отвечает за максимальный размер памяти, доступный для выделения процессам в Linux?

В моём понимании “параметр ядра” – это то, что в его командной строке указано. А которые можно на ходу менять через /proc или sysctl — это переменные. Тут, конечно, можно спорить, но это и означает, что вопрос интерпретируется неоднозначно.

Короче, тщательнЕе надо, товарищи, тщательнЕе. Системным администраторам задачи надо формулировать чётко, чтоб потом не удивляться последствиям ;)

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
2010-05-30 11:06 am

Ну девочка, ну твою мать

“Демон – в UNIX-системах – программа, выполняющаяся в фоновом режиме и обслуживающая запросы программ-клиентов. Обслужив поступивший запрос, демон посылает результаты клиенту и переходит в состояние ожидания следующего запроса.” – сообщают нам Яндекс.Словари со ссылкой на глоссарий.ру.

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

А наткнулся я на это замечательное определение благодаря ссылочке из описания Яндекс.Сервера.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
2010-04-21 12:13 pm
Entry tags:

PATH. Грабельки такие заботливо разложенные

Знаете, некоторые учебники для начинающих юниксоводов рекомендуют в целях безопасности в скриптах явно указывать PATH. Ну, типа, мало ли, в каких условиях его  запускать будут, лучше указать явно, чтоб не запустилось чего лишнего из ~/bin, /usr/local/,  и т.п.

Вот начитавшись таких учебников, тут некоторые товарищи и написали в скрипте PATH=/usr/bin:/usr/local/bin

А я потом три дня бился головой об стенку, пытаясь понять, чего ж оно не работает при переносе на другую систему. А на этой системе tar, rm, mv и прочая стандартная лабуда оказались в /bin. Ну и, конечно, сообщения об ошибках были заботливо перенаправлены в /dev/null, чтоб их случайно никто не увидел.

Уроды.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
2010-02-15 06:00 pm

Каверзный вопросик для системных администраторов

Дано: маленькая одноранговая виндовая локальная сеть. Доменный контроллер, WINS, DHCP, всё как обычно. Всё подключено через одни общий неуправляемый коммутатор. IP-адреса из блока 10.0.0.0/24.

Шлюзом в интернет работает юниксовая машина. Она же по совместительству работает VPN-концентратором (PPTP) для внешних клиентов. Адреса выдаёт из той же сети 10.0.0.0/24, чтобы подключившиеся клиенты прозрачно видели локальную сеть.

Никакой фильтрации трафика для локальных IP-адресов ни на самом шлюзе, ни на внутренних серверах нет.

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

В то же время соединения с самогО шлюза на те же внутренние серверы успешно устанавливаются.

Форвардинг на шлюзе, естественно, включён. Анализ с помощью tcpdump на шлюзе показывает, что пакеты из VPN успешно форвардятся в локальную сеть, но ответы на них не приходят. proxyarp включён.

Вопрос: кто виноват, что делать?

Upd: ответ под катом

Read the rest of this entry » )

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
2009-12-27 02:38 pm

А вот вакансия юниксового сисадмина

никого не интересует? https://slonik-v-domene.livejournal.com/45265.html

P.S. Я не знал, что в Рамблере всё так печально.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
2009-02-17 11:45 am

мне потихоньку становится страшно

большинство проблем с windows, на мой взгляд, вызвано не его собственными кривостями, а тем, что оконный интерфейс для управления создаёт ложную видимость простоты этого управления. а что там - всё же нарисовано, тыкнул в пару кнопочек, и оно заработало. это произвело на свет массу людей, по ошибке называющих себя "администраторами windows", а в реальности не способными ни на что, кроме тыканья в стандартные кнопочки. необходимость сделать шаг в сторону от накатанной колеи вызывает у них ступор.

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

кажется, эта пора прошла..

https://sysadmins.ru/topic224701.html
dil: (Default)
2005-08-15 10:00 am
Entry tags:

FreeBSD5 и vinum

Кому-нибудь удалось это запустить?
Имеем: 5.4-RELEASE. Запускаем vinum. Создаем том. Том создаётся, появляются девайсы в /dev/vinum/, отрабатывает newfs, том прекрасно монтируется, размонтируется, пишется, читается..
Но только до ближайшей остановки винума. stop/start и dumpconfig приводят в лучшем случае к сообщению
** no drives found: No such file or directory и полному отсутствию сконфигурированных девайсов,
а в худшем - к kernel panic.
В messages при запуске винума появляется загадочная надпись
vinum: Inappropriate ioctl for device

Рекомендованная проверка dd if=/dev/какой-нибудь_слайс skip=8 count=6 выдаёт сплошные нули.
По всем ощущениям винум просто не записывает конфигурацию на диск.
saveconfig не помогает - ошибок не выдаёт, но похоже, ничего и не делает.

Куда копать?
dil: (Default)
2005-06-14 01:28 pm
Entry tags:

FreeBSD - очень foolproof

Из чувства любопытства поставил фрю (5.4-RELEASE) и попробовал
# dd if=/dev/zero of=/dev/ad0s1a bs=512
Device busy сказала FreeBSD.

# dd if=/dev/zero of=/dev/ad0s1 bs=512
Operation not permitted сказала FreeBSD

# dd if=/dev/zero of=/dev/ad0 bs=512
Operation not permitted сказала FreeBSD
dil: (Default)
2005-01-29 02:44 pm

Я, наверное, чего-то не понимаю в этой жизни

http://www.valuejobs.ru/:
Вакансия 1009 (Valuehost Moscow) - Senior UNIX Administrator.
глубокие знания в области FREEBSD ядра, а также большой опыт программирования для операционных систем *BSD.
-Работа подходит для жителей Москвы;
-Опыт работы UNIX/BSD от 5 лет;
и при этом -Оплата по контракту от 800 у.е. на испытательный срок;

Интересно, давно они ждут администратора на такие деньги?

А, да, там еще одно требование есть - Знания всех сервисов FreeBSD, включая PERL опыт от 2-х лет.
dil: (Default)
2004-11-30 08:56 pm

(no subject)

Если среди моих читателей вдруг совершенно случайно попадутся юниксовые системные администраторы, желающие найти себе новую работу в маленькой, динамично развивающейся психбольнице, то милости просим резюме на dil эт яндекс точка ру

Требуется: приличное знание линукса и/или фри плюс отсутствие идиосинкразии к другим операционным системам, включая вындоуз.
Приветствуется знание прочего системного и прикладного софта и опыт его настройки - от баз данных до файрволов и маршрутизаторов. Опыт программирования на чём попало тоже is a plus.

В общем, все специалисты узкого и широкого профиля - отзывайтесь. Потому что работы - дофига.
dil: (Default)
2004-11-28 05:11 pm
Entry tags:

Вакансия такая странноватая

Our client is looking for a UNIX Administrator with excellent UNIX hardware knowledge and extensive experience of supporting UNIX.

Вот думаю, что такое UNIX hardware. Пока не придумал.