Шпаргалка по Linux command line для тестировщика
По работе мне часто приходится работать с удаленными системами через ssh (плюс ковырять Docker немного).
Поэтому я решил сделать небольшую шпаргалку по базовым командам, которые нужно знать тест инженеру при работе с unix командной строкой.
Базовые вещи
- pwd (распечатать текущую директорию)
- cd (перейти в каталог)
- cp (скопировать файл)
- mv (переместить файл или папку)
- mkdir (создать новую папку)
- rm (rm -r) (удалить папку или файл)
- man (help, whatis, info) (получить информацию о команде)
- diff (построчное сравнение файлов)
- patch (применение diff файла к оригиналу)
- passwd (поменять пароль пользователю)
- grep (поиск по текстовым файлам)
Записываем результат работы команды в файл:
ls -l /usr/bin > output.txt
Дописываем результат работы команды в файл:
ls -l /usr/bin >> output.txt
Записываем ошибки в файл:
ls -l /bin/usr 2> error.txt
Записываем все в файл:
ls -l /bin/usr &> output.txt
Сортируем список и оставляем уникальные значения:
ls /bin /usr/bin | sort | uniq | less
Делаем файл исполняемым:
chmod u+x script.sh
Генерируем рандомное число и пишем в файл:
echo $RANDOM >> random.txt
Работаем с историей
- history (выводит историю команд)
- !! / sudo !! (повторить последнюю команду)
- !число (повторяет команду с указанным номером из списка history)
- !строка (повторить последнюю команду из истории, которая начинается со строки)
- !?строка (повторить последнюю команду из истории, которая содержит строку)
Процессы и сети
- ps aux (список процессов)
- top (интерактивный список процессов)
- kill / killall (завершить процессы или список процессов)
- pstree - (получить дерево процессов)
- vmstat (получить снимок используемых ресурсов системы)
- xload (получить изменение нагрузки на систему в виде GUI)
- tload (получить изменение нагрузки на систему в терминале
- ping (проверка работоспособности удаленной машины)
- traceroute / tracepath (трассировка пути сетевых пакетов)
- netstat (текущее состояние TCP соединений)
Работаем с удаленной машиной
Подключиться к машине по ssh:
ssh -i "ssh_key.pem" user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com
Отправить файл с локальной машины на удаленную (EC2):
scp -i "ssh_key.pem" install.sh user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:/home/ec2-user/destination
Сделать архив из папки:
zip -r data.zip /your/ec2/directory/
Отправить файл с удаленной машины на локальную (в текущую папку):
scp -i "ssh_key.pem" user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:/home/ec2-user/data.zip .
Разархивировать файл:
unzip data.zip -d destination
Генерируем большие файлы (с мусором) для тестов:
dd if=/dev/zero of=large-file-1mb.txt count=1024 bs=1024 # 1MB
dd if=/dev/zero of=large-file-1gb.txt count=1024 bs=1048576 # 1GB
В заключение:
Для тех, кто хочет прочесть одну книгу и закрыть базовые моменты по работе с командной строкой - рекомендую книгу "Командная строка Linux. Полное руководство".
Тут в очень доступной форме и кучей практики описываются базовые команды, работы с редактором vim и даже немного bash скриптинг.
Если вы не разрабатываете драйвера для Linux (или не хотите лезть глубже) этой книги будет более чем достаточно.