Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Полезные, но малоизвестные команды Linux, часть 4

Оригинал: 10 Lesser Known Effective Linux Commands - Part IV
Автор: Avishek Kumar
Дата публикации: 29 ноября 2013 года
Перевод: А. Кривошей
Дата перевода: март 2014 г.

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

32. Команда strace

strace - это отладочная утилита, которая используется в основном для устанения неполадок. Она может не быть установлена в системе по умолчанию.
Трассировка исполнения команды с помощью strace:

root@tecmint [~]# strace pwd

execve("/bin/pwd", ["pwd"], [/* 29 vars */]) = 0
brk(0)                                  = 0x728000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0df2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=38427, ...}) = 0
mmap(NULL, 38427, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f29b0de8000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\355\1I;\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1922152, ...}) = 0
mmap(0x3b49000000, 3745960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b49000000
mprotect(0x3b4918a000, 2093056, PROT_NONE) = 0
mmap(0x3b49389000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x189000) = 0x3b49389000
mmap(0x3b4938e000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3b4938e000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de5000
....

Команда strace имеет множество аргументов и опций. Более подробную информацию о ней можно получить, изучив man-страницу.

33. Команда disown -a && exit

Большинство системных администраторов для контроля выполняемых в фоне процессов используют команду screen. Предположим, вам нужно запустить команду, которая будет выполняться в течение длительного времени, и переместить ее в фон. Если вы не знаете, как пользоваться screen, то в качестве альтернативы можете попробовать команду disown.
Команда disown используется для непрерывного фонового выполнения задач даже после закрытия сессии терминала. Синтаксис команды:

root@tecmint [~]# Command; disown -a && exit

Для того, чтобы снова вывести задачу на терминал, с помощью команды jobs найдите номер задачи, а затем выполните disown %n, где n - номер задачи. Чтобы проверить, работает ли еще запущенная команда, воспользуйтесь утилитами ps или top. Альтернативой disown является команда nohup.

34. Команда getconf LONG_BIT

Приведенная выше команда позволяет проверить, является ли ваша машина 32-битной, или 64-битной.

root@tecmint [~]# getconf LONG_BIT

32

35. Отображение даты и времени в терминале

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

root@tecmint [~]# while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &

дата и время в терминале

36. Команда convert

При написании этого руководства мне часто требовалось сохранять вывод команд в виде изображений. Я делал это следующим образом. Предположим, мне нужно сохранить вывод команды tree (для директории /etc/x11) в графическом формате:

root@tecmint:/etc/X11# tree | convert label:@- /home/avi/tree.png

Вывод заданной команды будет сохранен в указанной директории (в данном случае в моей домашней директории) в файле tree.png.

37. watch -t -n1 "date +%T|figlet"

Есть забавное приложение командной строки Figlet, которое может использоваться для создания простой ASCII-графики. Объединив его с командами watch и date, мы можем вывести анимированные цифровые часы.

root@tecmint [~]# watch -t -n1 "date +%T|figlet"

GMT
 _  ___    ____   ___    _____ _  _                                                 Fri Nov 29 10:29:34  
/ |/ _ \ _|___ \ / _ \ _|___ /| || |
| | | | (_) __) | (_) (_) |_ \| || |_
| | |_| |_ / __/ \__, |_ ___) |__   _|
|_|\___/(_)_____|  /_/(_)____/   |_|

38. Команды host и dig

Хотя команды "host" и "dig" нельзя назвать совсем малоизвестными, но применяются они не очень часто. Команда host используется для просмотра данных DNS.

root@tecmint [~]# host www.google.com

www.google.com has address 173.194.66.147
www.google.com has address 173.194.66.105
www.google.com has address 173.194.66.99
www.google.com has address 173.194.66.104
www.google.com has address 173.194.66.106
www.google.com has address 173.194.66.103
www.google.com has IPv6 address 2a00:1450:400c:c03::68

root@tecmint [~]# dig www.google.com

; <>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

39. Команда dstat

dstat является универсальной утилитой, генерирующей данные, касающиеся системных ресурсов. По умолчанию она не устанавливается, поэтому ее необходимо инсталлировать с помощью apt или yum.

root@tecmint [~]# dstat

dstat

40. Команда bind -p

Команда "bind -p" показывает все клавиатурные сочетания, доступные в BASH shell.

root@tecmint [~]# bind -p

"\C-g": abort 
"\C-x\C-g": abort 
"\e\C-g": abort 
"\C-j": accept-line
"\C-m": accept-line 
# alias-expand-line (not bound) 
# arrow-key-prefix (not bound) 
# backward-byte (not bound) 
"\C-b": backward-char 
"\eOD": backward-char 
"\e[D": backward-char 
"\e!": complete-command 
"\e/": complete-filename 
"\e@": complete-hostname 
"\e{": complete-into-braces 
"\e~": complete-username 
"\e$": complete-variable 
# copy-backward-word (not bound)
# copy-forward-word (not bound) 
# copy-region-as-kill (not bound)
....
....

41. touch /forcefsck

Приведенная выше команда создает пустую папку "forcefsck" в директории root. Это заставит систему Linux проверять файловую систему при каждой перезагрузке.

root@tecmint [~]# touch /forcefsck

На сегодня это все. Продолжение серии.