Сайт | Скачать | Видео | Wiki

Автор Тема: [Советы по Linux]  (Прочитано 6836 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zloy_T

  • Почетный участник
  • Старожил
  • *
  • Сообщений: 326
  • Репутация: +74/-2
  • Автор темы
[Советы по Linux]
« : 22 Май 2009, 16:42:23 »
1. Как быстро получить информацию о системе?

Быстро получить информацию о системе можно используя команду procinfo. Если этого недостаточно - смотрите файловую систему /proc.
Например: /proc/interrupts, /proc/cpuinfo...

2. Еще один способ получить полезную информацию о системе

Еще один способ получить полезную информацию о системе - команда vmstat. Она выводит информацию использовании памяти, процессора, областях swap и т.п.
Команда free выдает информацию о памяти и swap.

3. Как получить информацию о ваших загруженных модулях ядра

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

4. Нужно посмотреть параметры и возможные опции для модуля ядра Linux?

Воспользуйтесь командой modinfo. Например, Информация о авторе:
Код
modinfo -a модуль
Список возможных параметров:
Код
modinfo -p модуль

5. Полезная информация о ядре

Левый или правый CTRL, ALT, или SHIFT + scrollock покажут вам полезную информацию о ядре.

6. Как долго ваша система была запущена?

Чтобы увидеть, как долго ваша система была запущена, наберите uptime.

7. Как посмотреть какие порты открыты?

Код
netstat -a 
позволит вам увидеть все tcp и udp порты, которые открыты на вашей системе.

8. Нужно узнать какой сокет заняла программа?

Код
lsof -i -U
fuser port_num/tcp
а также:
Код
netstat -pvlA inet

9.Как посмотреть информацию о запущенных процессах?

Обычно используется "ps -aux", и потом "kill <номер процесса>". Так же есть специальные программы - такие, как top, gtop и ktop.

10. Как посмотреть свободное место на диске?

Чтобы посмотреть свободное место на диске, используйте команду df. Так же в KDE есть программа kdf (KDiskFree).

11. Как узнать размер всех директорий в данном каталоге?

Чтобы узнать размер всех директорий в данном каталоге, выполните команду:

Код
find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn 


12. Как разбить один большой файл на несколько маленьких?

Чтобы разбить один большой файл на несколько маленьких используйте команду:

Код
split --bytes=SIZE filename 


13. Как добавить конфигурации по умолчанию для программ?

Если вы хотите добавить конфигурации по умолчанию для своих программ (которые размещаются в каждой домашней директории), копируйте эти конфигурационные файлы в /etc/skel. Каждый раз, когда вы добавляете нового пользователя, эти файлы будут скопированы в домашние директории пользователей.

14. Как убрать возможность перезагрузки по нажатию клавиш CTRL-ALT-DEL?

Убрать возможность перезагрузки по нажатию клавиш CTRL-ALT-DEL можно закомментировав строку

Код
ca::ctrlaltdel:/sbin/shutdown -t5 -rf now

в файле /etc/inittab.

15. Быстрый метод завершения перезапускаемого(respawning) процесса?

Очень быстрый метод завершения перезапускаемого(respawning) процесса в вашем /etc/inittab - это переключение уровней исполнения. Например, если вы имеете строку:

Код
1:1235:respawn:/usr/sbin/mgetty /dev/ttyS1

переключение на уровень 4 остановит перезапускаемый процесс.

16. Как ограничить потребление ресурсов системы пользователями?

Если вы запустили большую систему с большим количеством пользователей, может быть очень важно ограничить потребление ресурсов системы пользователями. Вы можете контролировать эти ограничения с помощью модуля PAM и файла /etc/pam.d/limits.conf. Большинство современных дистрибутивов используют PAM для аутентификации. Пример ограничений для группы

Код
@users hard core 0

@users hard nproc 50

@users hard rss 5000

Это не позволяет создавать файлы core, ограничивает пользователя до 50 процессов и по использованию памяти до 5МБ

17. Как сделать дамп N-консоли?

Команда
Код
cat /dev/vcsN
сбрасывает дамп N-консоли.

18. Как запретить вход всех пользователей в систему?

Чтобы запретить вход всех пользователей в систему (кроме root) без перезагрузки создайте файл /etc/nologin. Содержимое этого файла будет отображаться когда пользователь попытается войти в систему.

19. Ограничение на выполнение команды su

Чтобы разрешить определенным пользователям делать su, что лучше чем всем по умолчанию, редактируйте /etc/login.defs и установите строку SU_WHEEL_ONLY в yes. Затем вам нужно добавить пользователей, которым нужно делать su в группу 0, что делается редактированием файла /etc/groups.

20. Как примонтировать директорию из одной части файловой системы в другую?

В linux 2.4.x ядрах:

Код
mount --bind какую_директорию_монтировать куда_монтировать

21. Как установить точное время?

Отличный способ установить на машине точное время - использовать каманду ntpdate:

Код
ntpdate 


Конечно, нужно иметь установленный пакет ntp и возможность соединения с сервером NTP. Вместо лучше использовать ip-адрес, чтобы избежать преобразования доменного имени в ip-адрес.

22. Как установить время CMOS?

Чтобы установить время CMOS системному используйте hwclock --systohc, а hwclock --hctosys - установит системное время, как время CMOS clock.

23. Как быстро скомпилировать ядро

Самый простой способ скомпилировать ядро это выполнить все команды make на одной строке набрав:

Код
make dep clean bzImage modules modules_install

Если вы просто пропатчили свое ядро тогда просто сделайте:

Код
make oldconfig dep clean bzImage modules modules_install. 


24. System.map

Вешь, о которой иногда забывают упомянуть, когда вы обновляете свое ядро - это файл System.map (обычно располагающийся в каталоге /boot), который не соответствует новому ядру. После перезагрузки вы увидите сообщения о некорректной версии ядра. После построения нового ядра не забудьте скопировать новый файл System.map из каталога /usr/src/linux в загрузочный каталог вашей системы (/boot).

25. Как увидеть сообщения выдаваемы ядром?

Увидеть сообщения, выдаваемые ядром на экран при загрузке системы можно набрав команду
Код
dmesg. 


26. Как посмотреть вывод команды и одновременно записать его в файл?

Посмотреть вывод команды и одновременно записать его в файл можно с помощью команды:

Код
tee $ls | tee logfile.txt 


27. Как запретить хранитель экрана в текстовом режиме?

Запретить хранитель экрана в текстовом режиме - напечатайте
Код
setterm -blank 0.

28.Средство для более быстрого поиска файлов, чем find

Средство для более быстрого поиска файлов, чем find - команда locate, которая использует базу данных для поиска. Для обновления этой базы часто используется cron. Или вручную - updatedb.

29. Список всех исполняемых файлов в системе, которые присутствуют в вашем $PATH?

Нажмите TAB + scroll-lock или еще проще - два нажатия на клавишу TAB. Результат один и тот же.

30. Как отключить сигнал "beep" в течение автоматического завершения командной строки?

Добавьте либо в ~/.inputrc или в /etc/inputrc для визуального звонка:

Код
set bell-style visible

совершенно без сигнала:

Код
set bell-style none 


31. Как послать данные на желаемый терминал?

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

Код
tail -f /var/log/messages > /dev/tty12

Для посылки любых сообщений на tty12.

32. Циклическое переключение через все доступные консоли.

Многие клавиатурные раскладки позволяют циклическое переключение через все доступные консоли используя Alt-RightArrow и Alt-LeftArrow.

33. Как выполнить родную команду системы, если используются алиасы?

Часто используете альясы shell (например, прописанные в ~/.bashrc), но иногда необходимо выполнить родную команду системы? Добавьте обратный слэш перед командой, это игнорирует псевдоним shell.

34. Как найти все файлы в каталоге, которые содержат строку?

Найти все файлы в каталоге, которые содержат строку:

Код
find . -type f -print | xargs grep -li "search string" 


35. Как сделать чтобы программа ожидала нажатия какой-либо клавиши пользователем?

При написании скриптов shell часто возникает необходимость того, чтобы в процессе выполнения программа ожидала нажатия какой-либо клавиши пользователем. Это можно сделать таким способом:

Код
stty raw; dd if=$(tty) of=/dev/null bs=1 count=1; stty -raw

36.Как перенаправить стандартный вывод и поток ошибок в один и тот же файл?

Чтобы перенаправить стандартный вывод и поток ошибок в один и тот же файл, используйте
Код
`&>'.


37. Как сохрать man-страницы в текстовый файл?

Самый простой способ сохранения man-страницы в текстовый файл -
Код
" man name | col -b > name.txt".

38. Все символы в консоли стали нечитаемыми

Если все символы в консоли стали нечитаемыми, наберите:

Код
"echo -ne "\017","stty sane" или просто "reset". 


39. Как перевести имена файлов в директории в нижний регистр?

Самый простой способ перевода всех имен файлов из директории в нижний регистр:

Код
"for x in *; do mv $x `echo $x | tr [A-Z] [a-z]`; done". 


40. Как быстро переименовать файл?

Чтобы быстро переименовать файл, используйте команду:

Код
"mv /usr/local/bin/{старое_имя,новое_имя}". 


41. Как удалить всю директорию без лишних запросов?

Чтобы удалить сразу всю директорию без лишних запросов, используйте:

Код
rm -rf имя_директории 


42. Как создать сразу несколько директорий?

Создание сразу нескольких директорий -
Код
"mkdir -p dir1/dir2/dir3".


43. Как правильно выключить компьютер?

Правильное выключение компьютера - команда
Код
"shutdown -h now"
.

Перезагрузка -
Код
"shutdown -r now"
или просто
Код
"init 5"
.

44. Как передать весь вывод одной команды на вход другой команде?

Чтобы передать весь вывод одной команды на вход другой команде, используется символ "|".

Таким образом можно делать сложные конструкции (например,
Код
"ls | sort -r | less"
).

45. Как следить за постоянно изменяющимися файлами?

Чтобы следить за постоянно изменяющимися файлами (например, за системными логами), используйте команду tail.

Пример:
Код
"tail -15 /var/log/syslog" 
- постоянно показывает последние 15 строк.

46. Как следить за списком файлов в реальном времени?

Слежение за списком файлов в реальном времени -
Код
 "watch -n 0 ls -l".

Команда watch осуществляет периодический запуск других команд.

47. Как искать текст в файлах?

Для поиска текста в файлах используется команда -
Код
"grep "ваш текст" /where/to/search".

Если при поиске не нужно учитывать регистр -
Код
"grep -i "ваш текст" /where/to/search" 


48. Как заменить одно слово на другое во многих файлах?

Для замены одного слова на другое сразу же во многих файлах можно использовать этот скрипт
Код
perl -pi -e 's/oneword/anotherword/g' *.
Если нужно сделать это же с одним файлом, поставьте его имя вместо " * ".

49. Как перейти из графического режима в текстовую консоль?

Чтобы перейти из графического режима в текстовую консоль, нажмите Ctrl+Alt+F1. (Ctrl+Alt+F2 - на вторую консоль, Ctrl+Alt+F3 - на третью консоль, etc). Для того, чтобы вернуться обратно в Иксы, обычно используется комбинация клавиш Alt+F7.

50. Как увидеть под Linux другой подключенный жесткий диск?

Чтобы увидеть под Linux другой подключенный жесткий диск, надо примонтировать (командой mount) разделы, которые на новом винчестере есть. Для этого надо определить, каким винчестер стоит: hdb, hdc или hdd. Для этого нужно всего лишь сообразить, как он подключен: primary slave - это hdb, secondary master - это hdc, secondary slave - это hdd. Теперь надо просмотреть, какие диски на винте есть. Для этого запускаем cfdisk для того винта, который мы определили на предыдущем шаге, например, для hdb: cfdisk /dev/hdb. Глядим, какие разделы есть. Например есть FAT32 (или он еще обозначается как WIN95) диск /dev/hdb1. Мы хотим его подключить скажем к каталогу /mnt/disk. Тогда: mount -t vfat /dev/hdb1 /mnt/disk. Здесь: параметр "-t" указывает тип файловой системы, в нашем случае это vfat, что соответствует fat32.

51. Работа с CD/R и CD/RW.

Стираем так:
Код
cdrecord -v blank=fast(или all) dev=<Ваш девайс>.

Образ делаем так:
Код
mkisofs -r -J -o <имя_файла_образа.iso> <то_чего_в_образ_загоняем> 


Пишем так:
Код
cdrecord -v -eject speed=8 dev=<Ваш девайс> file.iso. 


Если надо мультисессионный диск, то добавляем -multi.

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

52. Запись CD диска


Команды cdrecord, полезные при записи CDROM:

Код
mkisofs -V "volume_ID" -D -l -L -N -J -R -v -o cdrom.iso директория

Код
cdrecord -dev=0,1,0 -speed=4 -v cdrom.iso 


Для подключения IDE накопителя добавить в linux lilo append="hdc=ide-scsi"

( hdc - ваш привод?) и включить в ядре поддержку эмуляции SCSI.

-toc -atip -prcap - выдать полную информацию о накопителе.

-scanbus - определить параметры для -dev (можно /proc/scsi/scsi)

-dummy - запись в режие тестирования (без реального прожигания диска).

-fix - исправить недописавшийся диск.

-eject - после записи вытащить CD

-blank=all очистить CR-RW перед записью.

mkisofs -print-size - расчитать сколько потребуется места для записи директории

53. Как смонтировать образ компак-диска?

Смонтировать образ компакт-диска можно таким образом:

Код
#mkdir /mnt/iso

#mount -t iso9660 -o loop cd-image.iso /mnt/iso

(Разумеется, для операции монтирования нужно иметь права root). Теперь каталог /mnt/iso доступен для чтения содержимого образа компакт-диска.

54. Как узнать метку компакт-диска?

Узнать метку компакт-диска можно так:

Код
alias cdlabel='LABEL=`dd if=/dev/cdrom bs=1 count=32 skip=32808 2>/dev/null` && echo $LABEL'

Удобно использовать альяс в инициализационных скриптах shell.

Советы по “железу”

1. Как получить список устройств на шине PCI?

Получить список устройств на шине PCI можно таким образом:

Код
/sbin/lspci

2. Как включить при загрузке клавиши numlock?

Если вы хотите включить все клавиши numlock при загрузке, добавьте следущее в ваши загрузочные скрипты, например в rc.local:

Код
echo -n "Turning on numlock LEDs: "

for tty in /dev/tty[1-6] /dev/tty1[2]; do

setleds -D +num < $tty &

done

echo "done."

3. Как посмотреть информацию полученную от мыши на стандартный вывод?

Если у вас трудности с мышью, mev -i сбросит информацию полученную от мыши на стандартный вывод.

4. Раздражают сигналы спикера вашего компьютера когда вы ошиблись?

Попробуйте выполнить следующую команду bash:

Код
echo -ne '\033[11;0]'

которая устанавливает продолжительность сигнала для консоли равным 0 секунд. Чтобы сделать это автоматически добавьте эти строки в /etc/profile или ваш~/.profile. Подробную информацию о том, как установить частоту и длительность гудка, читайте в Visual bell mini-Howto.
« Последнее редактирование: 25 Май 2009, 02:59:37 от Zloy_T »

Оффлайн AZJIO

  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +10/-0
Re: [Советы по Linux]
« Ответ #1 : 27 Январь 2021, 08:26:33 »
Прежде чем создать тему решил поискать нет ли примеров замены текста в файлах и нашёл тут.
Не увидел в теме примера с регулярными выражениями и решил почитать о perl и попробовать.

Код
perl -pi -e 's/ --class ubuntu/ --class mint/g' /home/user/test/grub.cfg
perl -pi -e 's/(submenu ".+?")\{/\1 --class folder \{/g' /home/user/test/grub.cfg

реальный пример, "Grub Customizer", а также обновления ядра перезаписывают grub.cfg используя свои файлы настройки, и если в настройках можно найти элементы пунктов меню и их "--class mint" экспортируется из конфигов, то для submenu я не нашёл как элемент в чистом виде. Поэтому решил сделать код чтобы кликнуть и вернуть красивый вариант. То есть ничего не пришлось выдумывать, вместо строки поиска указать обычное регулярное выражение на движке PCRE (perl совместимое), которое используется в AutoIt3 хорошо мной изученного. А в поле замены использовать  ссылку на группу \1 и текст. В итоге результат был получен.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33966
  • Репутация: +231/-0
    • PuppyRus-A
Re: [Советы по Linux]
« Ответ #2 : 27 Январь 2021, 09:31:56 »
В наших дистрах перл не используется (жирный, сложный). Тот же функционал есть в sed (была инфа, что кто-то на sed шахматы написал). Можно усилить grep и awk . Подробнее в вики
В вашем примере даже синтаксис у sed будет такой же

Оффлайн AZJIO

  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +10/-0
Re: [Советы по Linux]
« Ответ #3 : 27 Январь 2021, 10:53:26 »
На grep находил, но не смог заставить работать, вот:
Код
# grep 'текст_который_нужно_искать' -P -R -I -l  * | xargs sed -i 's/текст_который_нужно_искать/текст_который_нужно_заменить/g'
надо ещё попробовать. Я пока понял что флаги -P -R надо убрать (пока), так как рег-выр и рекурсия, вместо звёздочки * путь к файлу. С ходу не сработало, но можно ещё попробовать.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33966
  • Репутация: +231/-0
    • PuppyRus-A
Re: [Советы по Linux]
« Ответ #4 : 27 Январь 2021, 11:10:47 »
Код
echo "111aaa" |sed 's/111/222/'
222aaa
На sed много чего можно
вместо звёздочки * путь к файлу.
Может find
« Последнее редактирование: 27 Январь 2021, 11:14:14 от sfs »

Оффлайн AZJIO

  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +10/-0
Re: [Советы по Linux]
« Ответ #5 : 08 Февраль 2021, 14:34:29 »
Вот без perl моя задачка решена.
Код
sed -i 's/ --class ubuntu/ --class mint/g' /boot/grub/grub.cfg
sed -i -r 's/(submenu ".+?")\{/\1 --class folder \{/g' /boot/grub/grub.cfg
Мне только понадобились флаги -i для сохранения и -r для рег.выр.

А это целиком с запросом пароля, так как файл доступ только от root
Код
if [ "$(id -nu)" != "root" ]; then
    sudo -k
    pass=$(whiptail --backtitle "Замена в grub.cfg (Grub2)" --title "Требуется права root" --passwordbox "Текущий пользователь: $USER\nВыполните аунтификацию для
root.\n\nВведите пароль для root:" 12 50 3>&2 2>&1 1>&3-)
    exec sudo -S -p '' "$0" "$@" <<< "$pass"
    exit 1
fi

sed -i 's/ --class ubuntu/ --class mint/g' /boot/grub/grub.cfg
sed -i -r 's/(submenu ".+?")\{/\1 --class folder \{/g' /boot/grub/grub.cfg
« Последнее редактирование: 08 Февраль 2021, 14:37:14 от AZJIO »

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: [Советы по Linux]
« Ответ #6 : 08 Февраль 2021, 20:41:52 »
А sudo разве пароль рута запрашивает? не текущего пользователя?
для поднятия привелегий
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн AZJIO

  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +10/-0
Re: [Советы по Linux]
« Ответ #7 : 09 Февраль 2021, 05:01:15 »
А sudo разве пароль рута запрашивает? не текущего пользователя?
для поднятия привелегий
Можно и так сказать, если в повышенных привилегиях используются настройки из папки root, а фм Nemo в контекстном меню явно указывает "Открыть как root", то остаётся признать что есть.