RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:terminal:terminal_tnt_fs_files

Различия

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

Ссылка на это сравнение

Следующая версия
Предыдущая версия
linux:terminal:terminal_tnt_fs_files [2021/01/14 04:28] – внешнее изменение 127.0.0.1linux:terminal:terminal_tnt_fs_files [2023/06/17 02:36] (текущий) dx
Строка 1: Строка 1:
 +====== Трюки в консоли: каталоги, файлы ======
 +
 +==== cp: cannot stat ====
 +
 +По крону выполняется команда
 +
 +<code bash>cp /home/rtfm/files/* /home/rtfm/bak</code>
 +
 +Получаю ошибку
 +
 +Ошибка **cp: cannot stat '/home/rtfm/files/*': No such file or directory**
 +
 +Директория files не всегда содержит файлы.\\
 +При использовании * копируются все файлы. Если директория пустая, то cp ищет файлы с именем *.
 +
 +Решение простое, но неочевидное - вместо ''*'' ставим ''.'' и добавляем ключ ''-r''
 +
 +<code bash>cp /home/rtfm/files/. /home/rtfm/bak</code>
 +
 +Вместо -r можно использовать -a (рекурсивно копирует + сохраняет все атрибуты файла, а также символические ссылки)
 +
 +==== Вывод ls chmod в числовом формате ====
 +
 +Разные варианты
 +  * [[https://stackoverflow.com/questions/1795976/can-the-unix-list-command-ls-output-numerical-chmod-permissions|Can the Unix list command 'ls' output numerical chmod permissions?]]
 +  * [[https://askubuntu.com/questions/144921/how-to-get-chmod-octal-permissions-of-the-folder-in-the-terminal|How to get chmod (octal) permissions of the folder in the terminal?]]
 +  * [[https://askubuntu.com/questions/152001/how-can-i-get-octal-file-permissions-from-command-line|How can I get octal file permissions from command line?]]
 +
 +Мне понравился вариант с [[https://askubuntu.com/a/696271|askubuntu]].
 +
 +Закидываем в .bashrc функцию
 +
 +<code bash>
 +function lsl2
 +   {
 +     find . -maxdepth 1 | sort |  xargs -I{} stat --format="%a %h %U %G %s %y %n" {}  | awk '{$7=substr($7,1,5);$8    =" ";print}'
 +   }
 +</code>
 +
 +==== Скопировать файл без пробела в имени в файл с пробелом ====
 +
 +Скопировать ''FooBar'' в ''Foo Bar''
 +
 +<code bash>cp "FooBar" "Foo Bar"</code>
 +
 +или через ''\_'' где ''_'' это пробел
 +
 +<code bash>cp FooBar Foo\ Bar</code>
 +
 +==== logrotate не удаляет старые архивы ====
 +
 +Rotate/maxage установлены, но gz архивов явно больше. Решение - добавить postrotate и find с mtime delete.
 +
 +<code>
 +/home/john/logs/*.log {
 +        daily
 +        missingok
 +        rotate 14
 +        #maxage 14
 +        compress
 +        delaycompress
 +        notifempty
 +        create 640 devuf devuf
 +        sharedscripts
 +        postrotate
 +                find /home/john/logs/* -name "*.log.*.gz" -mtime +14 -delete
 +        endscript
 +}
 +</code>
 +
 +===== Примеры GREP =====
 +
 +| Найти строку в текущей дире         | grep -R "find me" * |
 +| Найти строку в файле                | grep "find me" myfile.txt |
 +| Подсветить результат                | grep -R "find me" myfile.txt --color |
 +| Я не беспокоюсь о РЕГИСТРЕ          | grep -i "find me" myfile.txt |
 +| Покажите мне номер строки           | grep -n "find me" myfile.txt |
 +| Покажите в каком файле              | grep -l "find me" * |
 +| Как частво встречается              | grep -c "find me" myfile.txt |
 +| Покажите конкретный стринг \\ started, а не restarted, start или starting | grep -w "started" error.log |
 +| Покажите мне 5 строк до и 5 строк после интересующей меня строки | grep "started" -B5 -A5 error.log или grep "started" -C5 error.log |
 +| Показать совпадение в начале строки | <nowiki>grep "^find me" myfile.txt</nowiki> |
 +| Показать совпадение в конце строки  | grep "find me$" myfile.txt |
 +| Искать А или Б                      | <nowiki>egrep "foo|bar" myfile.txt</nowiki> |
 +| Искать в gzip                       | zgrep "find me" myfile.gz  |
 +
 +===== Найти измененные файлы за последний день =====
 +
 +<code bash>$ find . -mtime -1</code>
 +
 +  * -amin последний доступ к файлам в минутах
 +  * -atime последний доступ к файлам в днях
 +  * -cmin время создания файлов в минутах
 +  * -ctime время создания файлов в днях
 +  * -mmin время модификации файлов в минутах
 +
 +-mtime можно использовать еще и так
 +
 +  * -1 последние 24 часа
 +  * -0.5 последние 12 часов
 +  * -0.25 последние 6 часов
 +  * +3 более чем 3 дня
 +
 +Множество примеров по find - https://coderwall.com/t/find/popular
 +
 +===== Удалить все файлы кроме определенного расширения =====
 +
 +Рекурсивно удалить все файлы, кроме файлов с определенным расширением
 +
 +<code bash>find . -type f ! -name '*.txt' -delete</code>
 +
 +[[https://unix.stackexchange.com/questions/78376/in-linux-how-to-delete-all-files-except-the-pattern-txt|via]]
 +
 +===== Найти последние 500 измененных директорий и файлов =====
 +
 +Директории
 +
 +<code bash>find ./ -type d -printf '%T@ %p\t\t %t\n' | sort -k 1 -nr | sed 's/^[^ ]* //' | head -n 500</code>
 +
 +Файлы
 +
 +<code bash>find ./ -type f -printf '%T@ %p\t\t %t\n' | sort -k 1 -nr | sed 's/^[^ ]* //' | head -n 500</code>
 +
 +===== Удалить пустые строки в файле =====
 +
 +<code>sed '/^$/d' file-in.txt >> file-out.txt</code>
 +
 +Работает в zsh Lin/Mac
 +
 +===== nice и ionice =====
 +
 +[[https://www.opennet.ru/tips/1684_nice_ionice_cfq_scheduler_backup_kernel_linux.shtml|Как минимизировать влияние бэкап-скрипта на интенсивность ввода/вывода в Linux]] (opennet)
 +
 +Задача понизить влияние скрипта ''/etc/cron.d/backup.sh'' на систему (снизить нагрузку).
 +
 +Уменьшить приоритет ввода-вывода
 +
 +<code bash>/usr/bin/ionice -c2 -n7 /etc/cron.d/backup.sh</code>
 +
 +Параметр **-n** может принимать значения от 0 до 7. 7 наименьший приоритет, 1 максимальный приоритет.
 +
 +  * 1 - real time
 +  * 2 - нормальный режим
 +  * 3 - работа только в моменты простоя (idle)
 +  * 7 - cамый низкий уровень приоритета
 +
 +Уменьшить приоритет CPU
 +
 +<code bash>/usr/bin/nice -n 19 /etc/cron.d/backup.sh</code>
 +
 +Параметр **-n** может принимать значения от -20 до 19. 19 наименьший приоритет, -20 максимальный приоритет.
 +
 +**nice** и **ionice** можно комбинировать
 +
 +<code bash>/usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 /etc/cron.d/backup.sh</code>
 +
 +===== ls -la с датой и временем =====
 +
 +**ls -la**
 +
 +<code bash>
 +-rw-------.  1 root root      8487 Apr  1 10:21 .bash_history
 +-rw-r--r--.  1 root root        18 Dec 29  2013 .bash_logout
 +-rw-r--r--.  1 root root       176 Dec 29  2013 .bash_profile
 +-rw-r--r--.  1 root root       176 Dec 29  2013 .bashrc
 +drwx------.  3 root root        18 Feb  5 20:15 .config
 +-rw-r--r--.  1 root root      9908 Aug 10  2014 nux-dextop-release-0-5.el7.nux.noarch.rpm
 +-rw-r--r--.  1 root root  29345082 May 16  2019 serviio-2.0-linux.tar.gz
 +</code>
 +
 +**ls -la --time-style=long-iso**
 +
 +<code bash>
 +-rw-------.  1 root root      8487 2020-04-01 10:21 .bash_history
 +-rw-r--r--.  1 root root        18 2013-12-29 06:26 .bash_logout
 +-rw-r--r--.  1 root root       176 2013-12-29 06:26 .bash_profile
 +-rw-r--r--.  1 root root       176 2013-12-29 06:26 .bashrc
 +drwx------.  3 root root        18 2020-02-05 20:15 .config
 +-rw-r--r--.  1 root root      9908 2014-08-10 03:11 nux-dextop-release-0-5.el7.nux.noarch.rpm
 +-rw-r--r--.  1 root root  29345082 2019-05-16 00:30 serviio-2.0-linux.tar.gz
 +</code>
 +
 +===== ls -la вывод прав в числовом формате =====
 +
 +Вопрос вроде бы частый, но удобного решения не нашёл. Ухищрения с find или stat это слишком сложно.
 +