SDB:Всяческие полезные мелочи

Перейти к: навигация, поиск

Linux: О клавише SysRq и зависшем Туксе.

Когда зависает Linux [а он _иногда_ зависает. Хотя и не так часто, как продукция одной известной рэдмондской компании:)], и стандартные действия в виде "канонического" x-ребута через Ctrl+Alt+Backspace, равное как и попытки выйти в консоль через Ctrl+Alt+F1 уже не срабатывают, не стоит тыркать в кнопку Reset на системном блоке. Лучше сделать всё красиво и аккуратно. Примерно так:

Жмём Alt+SysRq+R (и далее + E, I, S, U, B)

R: возвращаем управление устройствам ввода (клава/мышь)

E: Безопасно завершаем все процессы, отставляя только init (данные сохраняются).

I: Небезопасное (SIGKILL) завершение процессов. Данные будут утеряны.

S: Перенос данных из кэша на hdd, синхронизация.

U: Перемонтируем все имеющиеся fs в read.

B: Reboot.

... Прим.: Клавиша SysRq - тоже самое что PrintScreen.

Подсветка синтаксиса в Vim.

открываем и редактируем файл

$vi /etc/vimrc

Находим строчку syntax on и раскоментируем ее


Меняем цвета MC.

открываем и редактируем файл

$vi ~/.mc/ini

И добавляем секцию

[Colors]
base_color=normal=brightgray,default:marked=yellow,default:directory=green,default:marked=yellow
default:errors=red,default:marked=yellow,default:executable=brightgreen,default:marked=yellow
default:link=brightblue,default:marked=yellow,default:device=brightmagenta,default:marked=yellow

Я привел свой вариант раскраски, а вам, как будет угодно :)

Добавляем полезную информации в оболочку bash.

открываем и редактируем файл

$vi ~/.bashrc

и добавляем переменную

PS1="\u@\t\w\$"

получаем такого типа приглашение

root@02:30:34/var/lib/named$ 

- текущее время и текущий каталог. "\u", user), имя компьютера ("\h", host), время ("\t", time), путь к текущему каталогу ("\w", work directory) "\W" (показывающую последний элемент пути, то есть собственное имя текущего каталога), "\w", полный путь, потому что "\w" обладает свойством выделять в полном пути домашний каталог и заменять его на "~".

История команд bash.

Двумя другими клавишами со стрелками - вверх и вниз - Adramelech тоже активно пользовался, не подозревая, что задействует этим весьма мощный механизм bash - работу с историей команд. Все команды, набранные пользователем, bash запоминает и позволяет обращаться к ним впоследствии. Если необходимо добыть из истории какую-то давнюю команду, проще не гонять список истории стрелками, а выполнить поиск с помощью команды "^R" -(Ctrl+R) (reverse search). При этом выводится подсказка специального вида ("reverse-i-search"), подстрока поиска (окруженная символами ` и ') и последняя из команд в истории, в которой эта подстрока присутствует:

adramelech@02:30:34/$
^R | (reverse-i-search)`':
i | (reverse-i-search)`i': ls i
n | (reverse-i-search)`in': info
f | (reverse-i-search)`inf': info
o | (reverse-i-search)`info': info
^R | (reverse-i-search)`info': man info
^R | (reverse-i-search)`info': info "(bash.info.bz2)Commands For History


Родная консоль.

Периодический перезапуск команды с перерисовкой экрана: Например, для отображения изменений содержимого директории:

watch -d ls -l

Создание директории с недостающими промежуточными директориями:

mkdir -p /tmp/dir1/dir2/dir3

что эквивалентно

mkdir /tmp/dir1
mkdir /tmp/dir1/dir2
mkdir /tmp/dir1/dir2/dir3

А еще в bash-е удобно использовать следующую конструкцию для создания нескольких директорий на одном уровне вложенности

mkdir -p /tmp/dir1/dir2/{dir3,dir4}

данный оператор выполнит команду для каждого из операндов и это будет эквивалентно

mkdir -p /tmp/dir1/dir2/dir3
mkdir -p /tmp/dir1/dir2/dir4

Причем это можно сипользовать для любых команд, например

chmod 775 /tmp/dir1/dir2/{dir3,dir4}

Linux-Aliase.

Поиск по истории - удобное средство: длинную командную строку можно не набирать целиком, а отыскать и использовать. Однако давнюю команду придется добывать с помощью нескольких "^R" - а можно и совсем не доискаться, если она уже выбыла оттуда. Для того чтобы оперативно заменять короткие команды длинными, стоит воспользоваться сокращениями (aliases). В конфигурационных файлах командного интерпретатора пользователя обычно уже определено несколько сокращений, список которых можно посмотреть с помощью команды alias без параметров:

root@02:30:34/$ alias
alias cd..='cd ..'
alias cp='cp -i'
alias l='ls -lapt'
alias ll='ls -laptc'
alias ls='ls --color=auto'
alias md='mkdir'
alias mv='mv -i'
alias rd='rmdir'
alias rm='rm -i'

Можно и нужно добавлять свои сокращения для команд:

root@02:30:34/$ alias mda='mkdir -p'
root@02:30:34/$ alias pd=pushd
root@02:30:36/$ alias pp=popd

Linux-WEB: Вытягиваем сайт целиком из консоли

Консольная качалка wget по-умолчанию присутствует в любой *nix-системе (ну, или почти в любой). С её помощью мы и утащим нужный нам сайт. Целиком.

Открываем терминал.

adramelech@02:38:30/$ cd /home/adramelech/websites
adramelech@02:39:34/websites$ wget -r -k -p -N -l 5 http://www.Имя_Целевого_Сайта.net/
  1. Пояснение по опциям:

-r - рекурсия

-k - конвертация ссылок

-p - содержимое страниц

-N - time-stamping (По желанию. Нужен только если собираемся докачивать обновившиеся страницы)

-l - глубина ссылок

Что делать если забыл пароль root в linux?

При загрузке GRUB жмём Esc потом стаем на линию инициализации ядра и редактируем параметры загружаемого ядра, добавляя в конец строки:

init=/bin/bash

Жмём Enter, затем B

Вводим

passwd root 

Собственно, тут можно изменить не только пароль root`а. Меняем пароль на новый.


Команды

Описание

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/* 	#искать текст во всех файлах указанного каталога и его подкаталогов
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 попытаться доставить все письма из очереди

update-rc.d squid defaults 19 	#Запускает squid на уровнях 2345 и останавливает на 016.Аргумент '19' позволяет запускать сценарий squid до сценариев с номерами 20 и выше.

(аналог chkconfig в Debian)

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



Info

cat /proc/cpuinfo 	 процессоре
cat /etc/*-release       Версия Linux 
df 	                 HDD
du -c /home/ 
    
или
ls -R -s -1 #размер каталога /home с размером каждого подкаталога, ключ "-s" показывает

только общий размер каталога, так 'du -s /*' покажет размеры всех каталогов в корне.

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 -an | grep 80 	#что прослушивает 80 порт (http)
dmesg 	#о процесе загрузки системы
find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn 	#размер всех подкаталогов в данном каталоге
lspci 	#список всех устройств PCI, в их число попадают и USB
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 	постоянно обновлять просматриваемый файл

Стегний Павел --Adramelech 15:55, 29 декабря 2008 (UTC)