Команды Linux, которые вы должны знать
Я использую инструментарий с открытым исходным кодом, который преимущественно работает на серверах Linux, поэтому часто нахожусь в терминале, выполняя команды для решения различных задач.
В этом руководстве я представлю вам шпаргалку (как бы) некоторых полезных и интересных команд, которые я часто использую.
Загляните внутрь процесса
У вас есть запущенный процесс, но вы не знаете, что он делает?
Используя команду "strace
", вы можете легко заглянуть внутрь запущенного процесса и вывести информацию о нем в журнал, выполнив следующую команду:
sudo strace -p 3612485 -e write
Остановка и перевод процесса в фоновый режим
# Press ctrl+z and type the following:
bg
Плохой интернет?
Хотите выполнить команду в удаленном терминале, но боитесь, что отключение может преждевременно остановить процесс?
Для этого есть два варианта: "nohup
" или "screen
". Screen
открывает терминал в окне, поэтому даже если сеть прервется, экран сохранится.
Команда nohup
делает нечто подобное, но при этом процесс продолжает выполняться даже при разрыве сети и записывается в файл журнала.
nohup python run_my_awesome_script.py &
Мы используем символ "&" для немедленного перевода процесса в фоновый режим, чтобы мы могли продолжить работу в терминале. Если это пропустить, то терминал будет заблокирован на этой команде до тех пор, пока она не завершится.
Для использования экранов:
screen -S MyScreen
Чтобы выйти и оставить экран открытым, введите "ctrl+alt+d".
Если же вы хотите вернуться к экрану:
# ScreenNameHere - optional - if you have only one open screen.
screen -r ScreenNameHere
Что выполняется на порту xyz?
lsof -i :5000
# Or
netstat -tupln | grep :5000
# Or - this one may not always give you the best results
# - as it also searches process IDs
ps aux | grep 5000
Сформирует список процессов, использующих указанный порт.
Синхронизация и копирование файлов
Rsync
- это очень мощный инструмент для инкрементной синхронизации файлов. Я не буду подробно описывать, что означают те или иные флаги - обратитесь к руководству, однако я расскажу о некоторых распространенных случаях использования rsync.
Найдите и скопируйте в каталог резервного копирования файлы журналов, возраст которых превышает 180 минут.
find /var/log/nginx -type f -mmin +180 -exec rsync -av {} /backups/nginx/logs \;
Синхронизируйте все файлы в каталоге /var/lib/mysql
с удаленным сервером. Установите для порта SSH значение "9023".
rsync -rav -e 'ssh -p 9023' --progress /var/lib/mysql/ root@192.168.1.1:/var/lib/mysql2/
Простое копирование - если требуется просто скопировать файлы между двумя системами и не требуется инкрементная синхронизация.
scp -P9023 -r somefiles/ root@192.168.1.1:/tmp/
Сжатие и распаковка файлов
tar -czvf somestuff.tar.gz somestuff/
# And unpack
tar -xzvf somestuff.tar.gz
# Compress a single file
gzip -9 data.xml
# Uncompress single file
gzip -d data.xml.gz
Метрики
# Open system monitor tool
htop
# View memory usage
free -m
# View processes
ps aux
# View CPU information
cat /proc/cpuinfo
# Disk space usage
df -h
# File/directory sizes in the current directory
du -h
# To 20 biggest files & folders in directory
du -h | sort -rh | head -n 20
Заключение
Это лишь малая часть полезных команд Linux, которые вы будете часто использовать.
Надеюсь, эта статья оказалась полезной для вас, но если у вас есть другие предложения или вы хотите, чтобы я в будущем написал статью о конкретной области, которую вы хотели бы осветить, пожалуйста, оставляйте свои комментарии ниже.