Обычно для удаления файлов в Linux используется команда
rm. Но файлы, удаленные с помощью этой команды, не удаляются окончательно с диска. Их содержимое остается на диске до тех пор, пока занятое ими пространство не будет перезаписано другими данными. Поэтому информацию возможно восстановить.Но что, если нам нужно удалить файлы так, чтобы их никто не восстановил? Для этого существует команда
shred.Она перезаписывает содержимое файла случайными данными несколько раз, а затем по желанию удаляет его. Это делает восстановление практически невозможным.
shred [опции] файл
Опции:
-n — перезаписать файл n раз-z — делает финальную перезапись нулями, чтобы скрыть сам факт использования shred.-u, --remove — после перезаписи удаляет файл (по умолчанию файл не удаляется).-v — выводит прогресс в терминал-f — принудительно снимает защиту от записи (если файл read-only).shred secret.txt
shred -n 5 -u secret.txt
shred -n 1 -z -u secret.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤1👀1
Демоны, или "daemons", в операционных системах работают в фоновом режиме и следят за различными аспектами системы для обеспечения ее нормальной работы.
Они могут контролировать различные подсистемы, такие как печать или сеть.
В Linux они подобны службам в Windows и выполняют определенные задачи в определенное время или в ответ на события.
Демоны могут быть запущены при старте системы и продолжают работу в качестве системных служб.
Они не требуют вмешательства пользователя для своего запуска и работают в фоновом режиме.
Создаются они процессом инициализации системы при загрузке с помощью метода fork(), создавая копию существующего процесса.
Демоны могут быть идентифицированы в системе по их процессам, их имена обычно заканчиваются на "d".
Их можно отслеживать с помощью различных команд, таких как
ps, top, htop и pstree. Команда pstree отображает процессы в виде древовидной диаграммы, что помогает лучше понять, какие демоны работают в системе.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Please open Telegram to view this post
VIEW IN TELEGRAM
Эта команда находит 10 наиболее часто встречающихся IP-адресов в файле access.log:
Покажет топ IP по количеству обращений. Незаменимо для анализа веб-серверов.
#вопросы
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort | uniq -c | sort -nr | headПокажет топ IP по количеству обращений. Незаменимо для анализа веб-серверов.
#вопросы
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
Каким будет результат, если выполнить команду
cat file1 file2 1>2 2>&1
cat file1 file2 1>2 2>&1
Anonymous Quiz
19%
cat: file1: No such file or directory hello
15%
cat: 1>2: No such file or directory
10%
hello
32%
Никакой вывод не будет показан на экране
24%
Посмотреть ответ
Вам знакома ситуация, когда ждешь чего-то важного, будь то подключение пользователя или копирование файлов по FTP? Постоянно приходится вводить одну и ту же команду для проверки результата. А это порой бывает утомительно.
Для таких случаев и пригодится команда
watch. Она используется для периодического запуска другой команды и отображения её вывода в терминале с обновлением через заданный интервал времени. Это удобно для "живого мониторинга" изменений в системе.watch [опции] команда
По умолчанию
watch запускает команду каждые 2 секунды.-n <сек> — задать интервал обновления в секундах (по умолчанию 2).-d — подсвечивать изменения между обновлениями.-t — убрать заголовок (без отображения времени и команды).-g — завершить выполнение, когда вывод изменится.watch -n 5 df -h
watch -n 2 ps aux | grep apache
watch -d cat /proc/meminfo
watch -n 1 "ps -C firefox -o %cpu,%mem,cmd"
watch -g ls -l file.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Фигурные скобки
{} в Bash позволяют разворачивать выражения в последовательность аргументов.Простой пример:
echo {1..10}
# 1 2 3 4 5 6 7 8 9 10Можно в обратную сторону:
echo {10..1}
# 10 9 8 7 6 5 4 3 2 1Третий параметр задаёт шаг:
echo {1..501..100}
# 1 101 201 301 401 501Можно и в обратную сторону:
echo {501..1..100}
# 501 401 301 201 101 1В отличие от
seq, фигурные скобки умеют работать с буквами:echo {A..P}
# A B C D E F G H I J K L M N O PШаг тоже поддерживается:
echo {A..P..2}
# A C E G I K M OСоздать сразу несколько директорий:
mkdir ~/Sources/{test1,test2,test3}Сравнить оригинал и патч одной командой:
diff {orig,patched}/path/to/prog.cСделать бэкап файла:
cp -p file.txt{,.bak}
# создаст file.txt и file.txt.bak⚠️ Важно: пробелы внутри
{} ломают расширение!echo file{1.. 2}.txt # не сработаетМожно убрать пробелы из вывода, передав вывод в
tr:echo {A..P..2} | tr -d " "
# ACEGIKMOСоздадим псевдоним для получения n-й буквы алфавита:
alias nth="echo {A..Z} | tr -d ' ' | cut -c"
nth 10
# JКвадратные скобки
[] — это сопоставление с шаблоном имён файлов, а фигурные {} — просто генерация последовательности.ls file[1-9].txt
# отберёт существующие файлы
ls file{1..9}.txt
# попытается вывести все файлы последовательности, даже если их нетКомбинация наборов:
touch {a,b,c}.{hpp,cpp}
# создаст a.cpp a.hpp b.cpp b.hpp c.cpp c.hppВложенные расширения:
mkdir -p {source,help{/pages,/yelp,/images}}Структура получится такая:
.
├── help
│ ├── images
│ ├── pages
│ └── yelp
└── source
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4😱1
Ответ через час.
#вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Для замены, замещения или удаления символов из стандартного ввода используется консольная команда
Опции:
🔴
🔴
Диапазон символов для выборки:
🔴
🔴
В результате команда оставит только стандартные печатные символы, табы и переводы строк.
#вопросы
tr. С ее помощью можно удалить нечитаемые символы:tr -cd '\11\12\15[:print:]' < bad.txt > clean.txt
Опции:
-c — инвертирует набор, т.е. все символы, не входящие в указанный диапазон, будут выбраны-d — удаляет выбранные символы (вместо замены)Диапазон символов для выборки:
\11, \12, \15 — это табуляция (\t), перевод строки (\n) и возврат каретки (\r), записанные в восьмеричном (octal) виде. Каждое число — это ASCII-код символа.[:print:] — все видимые символы.В результате команда оставит только стандартные печатные символы, табы и переводы строк.
#вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Выберите НЕвалидное имя переменной в bash.
Anonymous Quiz
39%
__ (двойное подчеркивание)
10%
_1var
9%
_var_
32%
some-var
11%
Посмотреть ответ
Команда
yes в Linux — это простая утилита, которая бесконечно выводит строку (по умолчанию y) в стандартный вывод.Эта команда часто применяется для автоматизации скриптов или тестирования.
$ yes [строка]
y.yes бесконечно генерирует вывод, поэтому почти всегда ее используют вместе с пайпами (|) или ограничителями (head).y можно автоматизировать. Здесь все запросы будут автоматически подтверждаться y:yes | apt-get install package
no. Здесь на все запросы ответ будет n:yes n | command
yes можно использовать для загрузки процессора. Этот процесс будет сильно нагружать CPU, пока его не остановить (Ctrl+C):yes > /dev/null
yes "строка" | head -n 1000 > file.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Обе команды связаны с повышением прав, но делают это по-разному.
su — substitute user sudo — substitute user and do su переключает вас на другого пользователя внутри текущей сессии. Для этого нужно знать пароль целевой учётки, а не своей.user@dev:/$ su john
Пароль: ****
john@dev:/$ whoami
john
Вы стали Джоном и работаете от его имени.
su без дефиса, как в этом примере, просто меняет пользователя, но оставляет окружение старого. О su - мы еще поговорим.sudo запускает одну команду от имени другого пользователя (по умолчанию — root). При этом спрашивается ваш пароль, а не пароль того, под кем выполняется команда.user@dev:/$ sudo -u john whoami
john
Чтобы это работало, у пользователя
user должны быть разрешения в /etc/sudoers:user ALL=(ALL:ALL) ALL
Редактируется через
visudo:sudo visudo
Проверить конфигурацию можно так:
sudo visudo -c
visudo защищает от ошибок: если синтаксис неправильный, файл не сохранится.Иногда можно заметить команду
su - john.Зачем дефис?
Он очищает окружение и запускает оболочку, как будто вы вошли в систему под новым пользователем.
Посмотрим на примере:
ssh user@pc
export a="test"
su john
echo $a
# test
Переменная
$a сохранилась.А теперь с дефисом:
su - john
echo $a
# ничего не выводит
Переменные исчезли — новая, "чистая" среда.
su — просто смена пользователя, старое окружение остаётся;su - — полная имитация входа в систему под новым пользователем.sudo тоже может запустить shell с разным уровнем "чистоты" окружения:sudo -s # shell с правами root, окружение текущее
sudo -i # shell как при входе под root (загружается /root/.profile и т.п.)
Если в /root/.profile прописать переменную, то она появится только при
sudo -i.sudo -i ≈ sudo su -Но писать
sudo su - — дурной тон: запускается лишний процесс, команда громоздкая и вообще не нужная.Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3
Чтобы получить топ-10 команд, которые вы вводите чаще всего, посчитайте частоту команд в истории. Это интересно и полезно для самоанализа.
#вопросы
history | awk '{print $2}' | sort | uniq -c | sort -nr | head
#вопросы
👍8🔥2
Как переименовать файл "new" в файл "old"?
Anonymous Quiz
75%
mv new old
4%
move new old
4%
cp new old
14%
rn new old
4%
Посмотреть ответ
symlinks — это консольный инструмент в Linux, который помогает управлять символьными ссылками (symbolic links, или "ярлыками" в файловой системе). Она позволяет искать, проверять и исправлять ссылки в заданном каталоге.На большинстве систем утилита ставится пакетом
symlinks:sudo apt install symlinks # Ubuntu, Debian
sudo dnf install symlinks # Fedora
sudo pacman -S symlinks # Arch
symlinks [опции] [каталог]
-c — заменить абсолютные / беспорядочные ссылки на относительные-d — удалить битые ссылки-o — предупреждать о ссылках между файловыми системами-r — проверять рекурсивно подкаталоги-s — сокращать длинные ссылки (отображаются в выводе только если не указан параметр -c)-t — показывать, что будет сделано с помощью -c-v — показывать подробный отчет (выводит все ссылки)symlinks -v /usr/local/bin
Команда выведет список ссылок и покажет, какие из них "good" — рабочие, а какие "dangling" — битые (ведут в несуществующий файл).
sudo symlinks -rd /opt/
symlinks -rv /home/user/projects
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1