Библиотека сайта 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
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
На сегодня это все. Продолжение серии.