|
ВНИМАНИЕ !
Эта статья перенесена на sysadminwiki.ru,
где вы можете принять участие в её улучшении!
Здесь она обновляться больше не будет.
|
Решение проблем в Linux.
Быстрый доступ к тематикам этой страницы:
apt, bind,
dpkg, lilo,
mc, mysql,
php, rpm,
squid, zypper
полезные команды,
сетевой интерфейс
Восстановление пароля root
В конце этого документа помещены заметки
не выделенные в тематики.
Также можно
посмотреть отдельные статьи по темам:
apache, iptables,
logwatch, mrtg, ntp,
postfix, samba, ssh,
vpn, wget,
резервное копирование
Обновлять и
доустанавливать пакеты можно и без доступа в
интернет. Для этого:
а) кладём
все доступные репозитории на один из локальных
компьютеров (напр 10.0.0.239 в каталог /usr/dvd-1-apt)
и заносим этот источник в список просматриваемых, т.е. создаём файл
# vi
/etc/apt/sources.list.d/local.list
и добавляем туда строку (для баз: base classic kernel)
rpm ssh://10.0.0.239/usr/dvd-1-apt/
i586 base classic kernel
б)
если CD-ROM есть, то добавляем содержимое диска:
# Apt-cdrom add
в)
можно положить образ установочного диска на
локальный жёсткий
диск и смонтировать его.
Для Alt Linux:
# mkdir /mnt/alt4dvd
# mount -o loop /home/pavel/distrib/alt4dvd.iso /mnt/alt4dvd
Добавим в /etc/apt/sources.list
строку:
rpm file:/mnt/alt4dvd ALTLinux base
disk contrib
где ALTLinux - каталог на
DVD с дистрибутивом, а в ALTLinux/base
находятся файлы pkglist.base,
pkglist.contrib, pkglist.disk, описывающие имеющиеся на
диске 3 набора пакетов. Эти наборы мы и подключили. Сами пакеты
находятся в каталогах ALTLinux/RPMS.имя_набора.
Для Debian:
# mkdir /mnt/debian_dvd1
/mnt/debian_dvd2 /mnt/debian_dvd3
# mount -o loop
/data/distrib/OS/Debian4.0r5/debian-40r5-i386-DVD-1.iso /mnt/debian_dvd1
# mount -o loop
/data/distrib/OS/Debian4.0r5/debian-40r5-i386-DVD-2.iso /mnt/debian_dvd2
# mount -o loop
/data/distrib/OS/Debian4.0r5/debian-40r5-i386-DVD-3.iso /mnt/debian_dvd3
В /etc/apt/sources.list добавляем:
deb file:/mnt/debian_dvd1 stable main contrib
deb file:/mnt/debian_dvd2 stable main contrib
deb file:/mnt/debian_dvd3 stable main contrib
Обновим список пакетов:
# apt-get update
Теперь, можно устанавливать пакеты как обычно через
"apt-get install".
Если для
установки пакета требуется наличие более старых
пакетов,
чем установленные у нас, то можно произветси даунгрейд (возврат к более
старой версии) установленных пакетов.
# apt-get install liblzo-devel
The following packages have unmet
dependencies:
liblzo-devel: Depends: liblzo (= 1.08-alt2) but 1.08-alt3 is to be
installed
E: Broken packages
# apt-get install
liblzo=1.08-alt2
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be DOWNGRADED
Но прежде чем опускаться до более старый версий стоит попробовать
обновить информацию о репозитории:
# apt-get update
И установить ещё раз. Если даунгрейд потянет за собой
много других пакетов, то может быть имеет смысл открыть в /etc/apt/sources.list доступ к
репозиторию Sysiphus и после команды update, попытаться установить
пакет ещё раз.
Если
сервер не
имеет
прямого
подключения
к
Интернет,
то
можно
обновиться
и через
прокси-сервер.
Для
этого
определим
переменные
окружения:
# export
http_proxy="http://host:port"
# export ftp_proxy="http://host:port"
Если
прокси
требует
пароля,
то:
# export
http_proxy="http://username:password@host:port"
Некоторые команды пакета apt
| Команды пакета
apt |
Описание
|
| apt-get
update |
обновление репозитария |
| apt-get dist-upgrade |
полное обновление ОС |
| apt-get check |
проверить текущее состояние системы |
| apt-get install
<package> |
установить пакет. Всё скаченное apt-get лежит в /var/cache/apt/archives. |
| apt-get -f install
<package> |
исправить зависимости |
| apt-get install -d
<package> |
скачать пакет не устанавливая. Лежать будет в /var/cache/apt/archives. |
| apt-get source
<package> |
скачать исходный текст пакета |
| apt-get remove
<package> |
удалить пакет. Результаты можно посмотреть в /var/log/user/info |
| apt-cache search
<string> |
поиск пакета по описанию |
| apt-cache showpkg
<package> |
показать описание пакета |
Если при запуске DNS вервера не копируются slave зоны, а в
журнале появляются записи:
May 03 16:33:23.403 general: dumping
master file: tmp-XXXXvmmNBt: open: permission denied
May 03 16:33:23.403 xfer-in: transfer of 'coke.com/IN' from
10.0.0.85#53: failed while receiving responses: permission denied
то нужно изменить владельца каталога zone на named.named:
# chown -R named.named
/var/lib/bind/zone
а если ещё и не создаётся журнал, то изменить владельца
var
# chown -R named.named
/var/lib/bind/var
- В Debian для перенастройки некоторых пакетов можно
использовать
утилиту dpkg-reconfigure, которой параметром передать имя пакета,
например:
# dpkg-reconfigure postfix
| Команды dpkg
(Debian) |
Описание
|
| dpkg --get-selections [образец...] |
Выдает список состояний выбора пакетов. |
| dpkg -p | --print-avail имя пакета |
Выводит детальную информацию о пакете, которую
извлекает из
файла /var/lib/dpkg/available. |
| dpkg -l | --list
<образец имени пакета>... |
Показывает пакеты, соответствующие данному образцу.
Если образец
имени пакета не задан, показывает все пакеты в /var/lib/dpkg/available.
В образце имени пакета можно указывать
обычные символы шаблона командной оболочки. |
| dpkg -L |
--listfiles <имя пакета> ... |
Показывает файлы, установленные на вашей системе из
пакета с
указанным именем. Заметьте, однако, что файлы, созданные
установочными скриптами пакета, не будут показаны. |
| dpkg -S | --search <образец
имени файла для поиска> ... |
Ищет в установленных пакетах файл по заданному
образцу. В
образце допустимы стандартные символы шаблонов командной
оболочки. |
| dpkg --audit |
команда
покажет частично установленные (Half-Installed) пакеты, пакеты,
настройка которых не удалась (Failed-Config), а также все пакеты в
ошибочных состояниях. |
|
|
Некоторый аналог windows'овского "Режима защиты от сбоев" или
"Безопасного режима" в Linux - это однопользовательский режим. Чтобы
войти в него, нужно при
старте системы, ещё до появления сообщения загрузчика Lilo, прижать
Alt (левый), тогда lilo войдёт в интерактивный режим загрузки. В
командной
строке запустить команду linux single:
boot: linux single
В этом режиме будут пропущены все стартовые скрипты из /etc/init.d и rc.local.
В Alt Linux для контроля каждого загружаемого драйвера/службы можно
загружаться в обычном режиме, но нажать "I" для входа в интерактивный
режим.
Восстановление пароля root
Для смены пароля root, не зная его, делаем следующее:
Получив физический доступ к компьютеру, нажимаем Ctrl + Alt + Del
(возможно дважды) - система уходит в перезагрузку.
1 вариант)
-
Попробовать загрузиться в однопользовательском режиме (single mode).
Для этого в меню загрузчика (Grub или Lilo - всё равно) отредактировать
вариант, начинающийся со слова kernel - добавить в конец 1 или слово
single, заменив также режим монтирования диска (если указан) с ro на rw
(чтобы можно было сохранить новый пароль).
- Если при загрузке
запрашивает пароль root'a, то нужно перезагрузиться и изменить
команду загрузчика по другому, добавив вместо single параметр
init=/bin/bash, заменив также режим монтирования диска (если указан) с
ro на rw
2 вариант)
- Входим в интерактивный режим загрузчика (см выше) и указываем ему
опцию:
linux init=/bin/bash
- После загрузки оболочки необходимо перемонтировать корневой раздел в
режим RW:
mount -o remount,rw /
- Меняем пароль:
passwd
- Сбросим данные из кеша на диск. Для этого достаточно просто
перемонтировать корневой раздел обратно в режим только для чтения:
mount -o remount,ro /
- Теперь можно перезагрузить компьютер в обычный режим. Не забывайте,
что
скрипты инициализации для нашего сеанса /bash не работают.
Полезные
ссылки:
http://special.w6.ru/node/37
http://itshaman.ru/articles/12/passwd-root-linux
Как-то у меня возникла проблема с загрузчиком, при загрузке
система выдавала L 01 01 01 ... на пол экрана. Помогла следующая
инструкция Георгия Литвинова из тех. поддержки Alt Linuxa (за что ему
спасибо):
1. Загрузится с liveDVD
2. Открыть консоль, получить права рута su -
3. Узнать какое название диска
# ls -l /mnt/
Если дисков много,то узнать какой диск с системой по содержимому диска.
К примеру
# ls -l /mnt/sda1
4. После этого в папку нужного нам диска монтируем dev. Папок новых не
создавать! На диске уже должна быть пустая папка dev
# mount --bind /dev /mnt/sda1/dev
5. После этого делаем смену корневой директории
# chroot /mnt/sda1/
Ошибку будет писать, если директорией опять же ошиблись.
6. Монтируем процессы
# mount proc
И всё, Вы в системе..
7. Можно попробовать попросить lilo самому исправить ошибку (мне
помогло):
# lilo
Перегружаемся и смотрим помогло ли. Если нет, то выполняем шаги 1-6 и
редактируем конфигурацию загрузчика:
# mcedit /etc/lilo.conf
но предварительно лучше сделайте резервную копию
# cp /etc/lilo.conf
/etc/lilo.conf.safe
Если ничто не помогает, то можно сменить загрузчик на Grub,
правда я этого не пробовал, но инструкцию получил вот какую:
Запуститесь
с liveCD. После запуска откройте консоль с правами рута. В приложенном
мной архиве лежит образ grub.iso . Создайте две папки
/mnt/mnt1
/mnt/mnt2
Выполните сделующие команды
mount -o loop /путь к образу/grub.iso /mnt/mnt1
mount -o loop /mnt/mnt1/grub.iso /mnt/mnt2 #{это
вложенный 2 образ grub}
cp /mnt/mnt2/boot /mnt/путь к разделу вашего линкуса/boot
Последяя команда должна скопировать файлы граба из второго образа на
раздел вашего установленного линукса.
Далее
проверьте скопировались ли файлы(появилась ли папка /boot/grub в вашем
разделе) ЗАПОМНИТЕ ИМЯ ВАШЕГО РАЗДЕЛА. Например sda1.
Далее замените файл на вашем разделе /boot/grub/menu.lst
на тот menu.lst, что я приложил к данному письму и измените данный файл
под вашу систему - как менять я написал в самом файле menu.lst менять
нужно только номера разделов на ваш sdaX и (hd0,0) на Ваш (hd0,X-1).
После того как Вы скопировали (заменили старый файл) на новый в /boot/grub/menu.lst перезагружайтесь
и загружайтесь с 1ого образа grub, который лежит прямо в архиве. После
того как Grub загрузился в нем можно будет выполнить команды.
Вам нужно выполнить в нем 2 команды:
root (hd0,X-1)
setup (hd0)
hd0 здесь и везде потому как Ваш диск виден как первый.
Вот вложенные файлы: grub.iso.bz2,
menu.lst
- В редакторе mc ,
для того, чтобы при вставке текста не запоминался отступ:
убрать крестик с опции: Options -> General -> Return does
autoindent
- Скопировать(переместить) файл в тотже каталог с другим именем
Shift+F5(F6)
- Открыть на смежной панели текущий каталог Alt+o
- Чтобы в mc работали клавиши "*","-","+" как в Far, нужно провести
обучение: Options -> learn Keys. Обучение также порой бывает
необходимо сделать и для функциональных клавиш.
- Функциональные клавиши можно заменить комбинацией Esc+Цифра, т.е F3 =
Esc + 3
-
Чтобы открыть на одной из панелей каталог удалённого
компьютера,
можно в меню Left или Right выбрать Ftp link или Shell link в
зависимости от желаемого протокола. Или набрать в командной строке mc
(в командрой строке без mc это не сработает):
# cd /#ftp:user@server
# cd /#sh:user@server
можно сразу с паролем и директорией:
# cd
/#sh:user:password@server/home/user
- Если работу с
MySQL планируется вести постоянно, то полезно будет установить
phpMyAdmin (http://php-myadmin.ru)
- Проверить целостность базы данных можно командой:
# /usr/bin/mysqlcheck -a DBName
- Выгрузить базу MySQL можно командой:
# mysqldump -u root -p DBName
> mydb.sql
Если mysqldump не запускается, то нужно указать полный
путь до этого файла, который можно узнать командой:
# find / -name mysqldump
/usr/local/mysql-3.23.54a-pc-linux-i686/bin/mysqldump
Сами базы MySQL хранит в /var/lib/mysql/db/,
здесь можно посмотреть какие базы созданы.
Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности
предварительно удалить старую:
# mysql -u root -p
mysql> drop database if exists DBName;
mysql> create
database DBName;
mysql> quit
а затем в неё загрузить данные:
# mysql -u root -p DBName <
mydb.sql
Если для пользователя root в MySQL нет пароля, то параметр
-p не нужен, также можно задать пароль явным образом, только без
пробела, например -pPassWord. Далее нужно убедиться, что в новой базе
есть тот пользователь, от имени которого происходило обращение к базе.
Если пользователя нет, то чтоб создать в точности такого пользователя с
соответствующими правами, выгружаем базу mysql и выбираем все строки,
касающиеся этого пользователя:
# mysqldump -u root -p mysql
> mysqldb.sql
В файле mysqldb.sql
останется приблизительно следующее:
INSERT INTO db VALUES
('%','DBName','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO host VALUES
('localhost','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES
('localhost', 'UserName', '','N','N','N','N','N','N','N','N', 'N', 'N',
'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '',
0, 0, 0);
При переходе с одной версии MySQL на другую нужно учитывать, что
количество параметров скорее всего будет разным, поэтому команду INSERT
придётся подредактировать. Также может изменится алгоритм шифрования
паролей. Сколько именно параметров можно узнать
выполнив:
mysql> SHOW
COLUMNS FROM db;
Можно указать только интересующие поля, а остальные примут значение по
умолчанию:
INSERT
INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`,
`Update_priv`, `Delete_priv`) VALUES
('localhost','stacc','Y','Y','Y','Y');
Загружаем базу командой:
# mysql -u root -p mysql <
mysqldb.sql
- Внести запись в базу данных из bash можно таким образом (определив,
конечно, переменные):
echo "INSERT INTO table_name (\`in\`,\`out\`) VALUES
('$delta_in', '$delta_out');" > $tmp_dir/temp.sql
`mysql -u$db_user -p$db_pass $db_name <
$tmp_dir/temp.sql`
Несколько полезных
команд:
| SHOW TABLES; |
# показать
таблицы в БД |
| SHOW COLUMNS
FROM db; |
# показать поля таблицы db |
| USE mysql; |
# перейти в БД mysql |
| SELECT host,user
FROM user; |
# показать поля host, user таблицы
user |
| DROP TABLE
transport; |
# удалить таблицу transport |
| DELETE FROM user
WHERE user='acct' AND host='%'; |
# удалить конкретную запись |
| UPDATE db SET
Delete_priv='Y' WHERE user='acct'; |
# изменить значение поля в записи |
| FLUSH PRIVILEGES; |
# применить внесённые изменения |
| mysql -u root
-p12345 postfix < DB.sql |
# пакетное выполнение SQL выражений
для базы данных postfix |
| ALTER TABLE mailbox ADD
(uid int(10) unsigned DEFAULT '107' NOT NULL); |
# добавляем в таблицу
mailbox обязательное поле uid со значением по умолчанию = 107 |
| ALTER TABLE mailbox DROP uid; |
# удаляем поле uid из
таблицы mailbox |
| GRANT ALL PRIVILEGES ON DBName.* TO
UserName@localhost IDENTIFIED BY '12345'; |
# дать все права на базу DBName
пользователю UserName, подключающемуся с localhost с паролем 12345 |
| CHECK TABLE TableName; |
проверить целостность таблицы TableName |
| REPAIR TABLE TableName; |
исправить целостность таблицы TableName |
Полезные ссылки:
www.opennet.ru/docs/RUS/mysqlrus -
Документация на MySQL
- Если проблемы с насройкой php, то можно включить лог и
посмотреть, что не работает. Редактируем /etc/php/4.4.7/apache2-mod_php/php.ini:
display_errors = On
display_startup_errors = On
log_errors = On
error_log = /var/log/php.log
Если php страницы отображаются не в той кодировке, то меняем
кодировку по умолчанию:
default_charset = "windows-1251"
- Информацию о самом php можно получить, открыв в браузере
предварительно созданный файл info.php:
<?php
phpinfo();
?>
если есть проблемы с доступом к скрипту info.php через браузер, то то
же самое получим, выполнив команду:
# php -i > info.html
- Чтобы не получать предупреждения PHP вроде Undefined variable и
Undefined index, нужно изменить уровень оповещения в /etc/php/.../php.ini:
error_reporting = E_ALL & ~E_NOTICE
| Команды
пакета rpm |
Описание |
| rpm2cpio
file.rpm | cpio -idmuv --no-absolute-filenames |
вручную распаковать rpm файл |
| rpm -i
<пакеты> |
Установка пакетов |
| rpm -e
<пакеты> |
Деинсталляция пакета |
| rpm -Uvh
<пакеты> |
Обновление или установка пакетов |
| rpm -q
<пакет> |
Информация о пакете |
| rpm -qf
<файл> |
Узнать какому пакету принадлежит файл
Полезно:
-qi - более полное описание пакета,
-ql - список файлов в пакете,
-qc - список конфигов в пакете,
-qd - список документации,
-qR - список зависимостей пакета. |
| rpm --recompile <srpm> |
Установка из исходников |
| rpm --rebuild <srpm> |
собрать бинарный пакет |
| rpm --rebuilddb |
Перестроить базу |
| rpm -Va |
Проверить все установленные пакеты на зависимости |
Смотреть также статьи:
Статистика прокси сервера Squid
Статистика использования
Интернет трафика клиентом
Squid хранит свои журналы в формате:
Time Elapsed Host Status/HTTP Size
Method URL Ident Hier_Status/Hier_Host Content_Type
Довольно подробно про журналы можно почитать на русском здесь www.bog.pp.ru/work/squid.html#logs
Чтобы
объединить несколько проски-серверов squid для обмена
кэшами
между собой, нужно в squid.conf на каждом из них указать соседей:
icp_port 3130
cache_peer 10.0.0.2 sibling 3128 3130
cache_peer 10.0.0.3 sibling 3128 3130
Если мы хотем завернуть весь трафик на соседний прокси, т.е.
заставить наш прокси 10.0.0.1 выходить в Интернет только через соседний
прокси-сервер 10.0.0.2, то в squid.conf прописываем:
icp_port 3130
cache_peer 10.0.0.2 parent 3128 3130
never_direct allow all
и на 10.0.0.2 даём доступ для 10.0.0.1. Теперь все пользователи,
подключенные к 10.0.0.1 будут выходить в Интернет через прокси 10.0.0.2
как один большой пользователь
Решить
проблемы со squid могут помочь журналы /var/log/messages
и /var/log/squid/cache.log
Если squid перестал работать, а в журнале появились записи:
(squid): storeUfsDirOpenSwapLog:
Failed to open swap log.
squid[8293]: Squid Parent: child process 8317 exited due to signal 6
squid[8293]: Exiting due to repeated, frequent failures
значит squid потерял доступ к каталогу со своим кэшем. Проверить это
можно установив полный доступ к каталогу. Предварительно запомним кому
он принадлежит и с какими правами:
# chmod 777 /var/spool/squid
Если после этого squid запустился нормально, то стоит
выяснить почему он потерял свои права.
Чтобы позволить клиентам подключаться через прокси сервер к серверам в
Интеренет по определённому порту, скажем 3900 и 3901, добавляем в /etc/squid/squid.conf правило:
acl Special_ports port 3900 3901
...
http_access deny CONNECT ... !Special_ports
Zypper - менеджер пакетов в Suse
| Комманды |
Описание |
| zypper update |
обновление базы данных
пакетов |
| zypper install mc |
установка пакета mc |
| zypper search perl |
искать все пакеты Perl |
| Команда |
Описание
|
| cd - |
Вернуться в предыдущий каталог |
| rm -rf
<DirName> |
удалить сразу всю директорию без лишних запросов |
| split [-b
кол-во_байт] [-l кол-во_линий] имя_файла |
разбить файл на несколько частей |
| perl -pi -e
's/oneword/anotherword/g' *. |
заменить одно слово на другое во многих файлах, если в
одном файле,то поставить его имя вместо " * " |
| perl -e
'@time=localtime(time()-84600); print $time[3]' |
Вчерашнее число |
| perl -e
'$time=localtime(time()-84600); print $time' |
Вчерашняя дата |
| grep -R "текст" /where/to/search/* |
искать текст во всех файлах указанного каталога и его
подкаталогов |
| cat /etc/squid/squid.conf |
grep -v ^# |
отобразить все строки не начинающиеся с # |
| tail -15 /var/log/messages |
показать последние 15 строк файла |
| tail -15 /var/log/messages >
/dev/tty2 |
послать данные на желаемый терминал |
| tail -f /var/log/messages | grep
login |
показывать вновь записываемые в журнал события,
содержащие слово "login" |
| ls | /usr/bin/mailx -s "`uname -n`
ls by mail " webmaster@mynet.ru |
отправить вывод команды ls по почте. Используется пакет
mailx. Для RedHat 9
вызов программы: /bin/mail
|
| LANG=C |
сбросить языковые настройки. Включится английский.
(полезно при неправильном отображении в mc)
|
| mailq |
показать какие письма находятся в очереди на отправку |
| postqueue -f |
попытаться доставить все письма из очереди |
| chkconfig squid on | включить демон в автозапуск, off - выключить |
| update-rc.d squid defaults 19 |
В Debian запускает squid на уровнях 2345 и останавливает на 016.
Аргумент '19'
позволяет запускать сценарий squid до сценариев с номерами 20 и выше.
(аналог команды chkconfig в других дистрибутивах) |
| update-rc.d -f samba remove |
В Debian удалить все ссылки из /etc/rcN.d для
демона samba (как для запуска так и для останова) |
| date --set='2007-8-03 13:44' |
установить системные дату и время |
iptables -t nat -A POSTROUTING -s
10.0.3.41 -d 217.217.217.217 -o eth1 -p tcp --dport 25 -j SNAT --to
116.116.116.116
|
Разрешаем
прямой доступ к внешней почте. Подробнее: разрешаем доступ хосту
10.0.3.41 из внутренней сети обращаться к хосту 217.217.217.217 на 25
порт (smtp) протокола tcp; такие обращения пропускаем через интерфейс
eth1, который имеет адрес 116.116.116.116
Для доступа к РОР добавляем такое же правило для порта 110 |
iptables -t nat -A POSTROUTING -s
10.0.3.41 -p tcp --dport 25 -j MASQUERADE
|
Более
короткое правило, аналогичное вышеприведённому, только здесь
пользователь с ip 10.0.3.41 имеет доступ к любому почтовому серверу в
Интернете. |
| ps axo euid,ruid,tty,pid,comm | grep apache2 |
узнать от имени какого пользователя работает Apache |
| export EDITOR=mcedit |
поменять текстовый редактор по умолчанию на 'mcedit' |
| alsamixer |
настройка звука в текстовом режиме |
| host -t mx mail.ru | проверить какой сервер отвечает за приём почты в этом домене |
| Информация о
системе |
| Команда |
Информация о... |
| uname -a |
системе (ОС, процессор, имя компьютера и т.д.) |
| cat /proc/cpuinfo |
процессоре |
| cat /etc/redhat-release |
версии Red Hat |
| df |
HDD |
du -c
/home/
или
ls -R -s -1
|
размер
каталога /home с размером каждого подкаталога, ключ "-s" показывает
только общий размер каталога, так 'du -s /*' покажет размеры всех
каталогов в корне. |
| find . -maxdepth 1 -type d -print | xargs du -sk | sort
-rn |
размер всех подкаталогов в данном каталоге |
| top |
процессах, RAM |
| cat /etc/passwd |
всех пользователях |
| cat /etc/group |
всех группах |
| id oracle |
пользователе oracle |
finger или
w |
пользователях, зарегистрированных сейчас в системе (на
каком терминале, откуда и т.д.) |
| cat /proc/mdstat |
состоянии RAID массива (софтверного) |
| cat /proc/megaraid/hba0/raiddrives-0-9 |
состоянии RAID массива (на контроллере megaraid) |
| cat /proc/megaraid/hba0/diskdrives-ch0 |
состоянии дисков на канале 0 в RAID массиве |
| ip route show |
Откуда взялся маршрут |
| uptime |
как долго система запущена |
| lsmod |
загруженных модулях ядра |
| netstat -a |
просмотр всех открытых tcp и udp портов |
| netstat -apn | grep 80 |
что прослушивает 80 порт (http) |
| dmesg |
процесе загрузки системы |
| lspci |
список всех устройств PCI, в их число попадают и USB |
| lspci | grep Audio |
драйвере аудио карты |
| ps axo euid,ruid,tty,pid,comm |
процессах, от кого запущены, на каком TTY и с каким PID
|
| Комманды
(раз)архивирования |
Описание |
| tar -cvf - * | gzip -c > arc.tar.gz |
заархивировать всё
содержимое текущего каталога (включая подкаталоги) |
| tar -zxvf arc.tar.gz |
разархивировать всё в
текущий каталог |
| gzip -cd arc.tar.gz | tar -xvf - |
|
| gzip -cd Fname | cpio -imd# |
|
| bzip2 -cd arc.tar.bz2 | tar -xvf - |
|
Комманды less,
просмотр руководств (мануалов) |
Описание |
| g |
на начало текста |
| G |
на конец текста |
| /слово |
поиск подстроки "слово" |
| / |
продолжение поиска |
| F |
постоянно обновлять просматриваемый файл |
Смотреть также статью "Отчёты о
нагрузке сетевой карты"
Если нужно изменить ip адреса сетевых карт, то
в AltLinux 2.4 Master и 2.3 Compact правим:
# vi
/etc/sysconfig/network-scripts/ifcfg-eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
# /etc/init.d/network restart
либо используем утилиту "draknet"
В AltLinux >3.0 используется
новый набор скриптов для
сетевых настроек - etcnet. Подробно можно узнать на www.freesource.info/wiki/AltLinux
Настройки интерфейсов лежать одельно по каталогам в /etc/net/ifaces/. Настройка
интуитивно понятна. Не забудем перегрузить службу network
В Debian редактируем файл /etc/network/interfaces,
после чего перезапускаем интерфейсы
# /etc/init.d/networking restart
Интерфейсы не поднимутся, если нет физического соединения!
Чтобы сетевая карта откликалась более чем на один IP адрес
нужно
создать алиасы (alias) на интерфейс. Создать алиас на интерфейс eth0
можно скопировав файл /etc/sysconfig/network-scripts/ifcfg-eth0
в файл ifcfg-eth0:0. В
новом файле указываем настройки желаемого IP адреса, не забывая указать
параметр DEVICE=eth0:0
Запускаем команду
#
/etc/sysconfig/network-scripts/ifup-aliases eth0:0
либо
# /etc/init.d/network reload
если указать параметр restart, то оборвуться все
соединения
Если заменили сетевую карту, а система пытается её
использовать со старыми драйверами, то нужно указать новое соответствие
в /etc/modules.conf. Так,
если используем сетевую карту Realtek RTL-8139, то указываем драйвер:
alias eth0 8139too
- Если что-то не работает, то первым делом нужно посмотреть, что
написано в журнале сбоящего приложения. Большинство приложений в linux
хранят свои журналы в каталоге /var/log/
Сообщения системы можно посмотреть в /var/log/messages,
Некоторые сообщения об ошибках приходят на почтовый ящик пользователя
root (в alt linux первому пользователю созданному после root), который
находится в /var/mail/
В Debian системные журналы ведутся
в /var/log/syslog, messages
- Если нужно изменить имя компьютера (hostname), то правим:
# vi /etc/hosts
# hostname
<new_host_name>
но лучше использовать специальные утилиты. Для Alt Linux:
# draknet
Для Debian:
# dpkg-reconfigure etherconf
иначе при перезагрузке она затрёт все исправления. При этом нужно не
забыть поменять имя и во всех прикладных программах, где есть
соответствующая ссылка. Для Courier-IMAP: /etc/courier-authlib/authdaemon-mysql.conf:
DEFAULT_DOMAIN
- Пересоздать сертификаты, изменив настройки в /etc/courier-imap/
- Перенастроить DNS
- Чтобы найти все файлы где упоминается имя хоста можно выполнить:
# grep -R
<old_host_name> /etc
Если не работает какая-нибудь программа обмена данными с
внешним
миром (например почта, ftp, web, удалённый рабочий стол и т.д.), а
команды ping и traceroute отрабатывают без проблем, то,
возможно,
нужно уменьшить максимальный размер пакетов (MTU) на сет карте.
Это особенно актуально, если организован vpn канал.
Проверяем какой размер проходит и меняем настройки сет карты:
# ping -s 1500 ya.ru
# ping -s 1350 ya.ru
PING ya.ru (213.180.204.8)
1350(1378) bytes of data.
1358 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=54 time=82.8 ms
1358 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=54 time=83.4 ms
1358 bytes from ya.ru (213.180.204.8): icmp_seq=3 ttl=54 time=83.1 ms
# ifconfig eth1 mtu 1350
Чтобы это сохранилось и при перезагрузке, добавляем эту
команду в конец файла /etc/rc.d/rc
либо /etc/rc.d/rc.local
- Если есть подозрения на почтовый вирус, смотрим кто заражён,
просматривая отфильтрованный по порту трафик на сет. карте:
# tcpdump port 25
чтобы просмотреть трафик пользователя:
#
tcpdump host 10.0.0.10
по умолчанию прослушивается интерфейс eth0. Для прослушивания дргого
интерфейса указываем его в параметре i:
# tcpdump host 10.0.0.10 -i eth1
- Чтобы обнаружить кто сканирует сеть icmp пакетами, запускаем:
# tcpdump ip proto \\icmp
-nn
- Ловим весь трафик на внешнем сетевом
интерфейсе (у нас это eth1), исключая
трафик генерируемый нашей SSH-сессией
(здесь 94.94.94.94 - внешний адрес сервера, 10.0.0.10 - адрес
компьютера с которого мы подключились к нему)
#
tcpdump -i eth1 -n -nn -ttt 'dst host 94.94.94.94 and not ( src host
10.0.0.10 and dst port 22 )'
| Командная строка |
Описание
|
TAB +
scroll-lock или
TAB + TAB |
список всех исполняемых файлов в системе, которые
присутствуют в $PATH |
| Ctrl + u |
очистить командную строку от курсора до начала, в том
числе при вводе пароля. |
| Ctrl + a |
перевести курсор на начало строки |
| Ctrl + e |
перевести курсор на конец строки |
| Alt + c |
сделать заглавную букву у текущего слова |
| Alt + t |
поменять местами слова |
| Alt + u |
перевести слово в верхний регистр |
| Alt + d |
удалить конец слова |
Формат записей crontab
можно посмотреть в /etc/crontab.template:
minute (0-59),
| hour (0-23),
|
| day of the month (1-31),
|
| | month
of the year (1-12),
|
| |
| day of the week (0-6 with 0=Sunday).
|
| |
|
| user commands
Чтобы получать результаты работы crontab по почте (полезно при отладке)
указываем /etc/crontab:
MAILTO=admin@mynetwork.ru
Если же не хотим получать ничего, то там же указываем:
MAILTO=/dev/null
Файлы crontab пользователей находятся в каталоге /var/spool/cron,
системный - в файле /etc/crontab
Также демон cron запускает команды из каталогов /etc/cron.d
/etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
Для того, чтобы создать образы дисков и иметь к ним
постоянный доступ, что удобно, например, с apt, выполняем:
# mkdir /dvd
# cd /dvd
# dd if=/dev/cdrom of=имя_образа
# mount -o loop /dvd/имя_образа.iso /mnt/имя_dvd
Для выполнения sudo в Alt Linux 4.0 нужно чтобы пользователь
был в группе wheel.
Для удаления раздела в Linux можно использовать пакет parted.
Так для удаления 3 раздела на диске sda, т.е. удалить раздел sda3:
# parted /dev/sda
(parted) rm 3
Для работы с диском можно использовать команду fdisk.
easylinux.ru/node/176
- статья по parted
www.linuxrsp.ru/docs/fdisk.html
- статья по fdisk
Если не загружается графическая оболочка (иксы), например, после
переустановки видеокарты, то можно указать в конфигурации стандартный
драйвер vesa. В этом режиме будет работать, думаю, любая видекарта. Для
Debian драйвер указывается в файле /etc/X11/xorg.conf:
Section "Device"
...
Driver "vesa"
...
При компиляции (точнее при конфигурации перед компиляцией) samba3 в Debian 4 (etch) получил ошибку:
configure: error: C++ compiler cannot create executables
Помогла доустановка двух пакетов:
# apt-get install build-essential g++
Полезная ссылка: http://www.linuxquestions.org/questions/linux-newbie-8/configure-error-c-compiler-cannot-create-executables-354485/