← Назад к вопросам

Какие используешь команды в Linux?

2.0 Middle🔥 111 комментариев
#Другое#Основы Go

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Часто используемые команды Linux в разработке на Go

Как Go-разработчик с опытом, я активно использую Linux (чаще Ubuntu или Alpine в контейнерах) и регулярно применяю определенный набор команд для системного администрирования, отладки, мониторинга и работы с кодом. Вот основные категории и команды:

1. Работа с файлами и каталогами

  • ls -la — просмотр подробного списка файлов, включая скрытые. Ключ -l (long format) и -a (all) незаменимы.
  • cd, pwd — навигация по директориям и определение текущего пути.
  • cp -r, mv, rm -rf — копирование (рекурсивно), перемещение и удаление (рекурсивно и принудительно). С rm всегда осторожен!
  • find . -name "*.go" -type f — поиск Go-файлов в текущей директории и поддиректориях. Часто комбинирую с grep.
  • chmod и chown — управление правами доступа и владельцем файлов (актуально для скриптов развертывания).

2. Просмотр и обработка содержимого файлов

  • cat, less, tail -fcat для быстрого просмотра, less для постраничного, а tail -f незаменим для мониторинга логов в реальном времени (например, логов приложения или docker logs).
    tail -f /var/log/myapp/app.log
    
  • grep -r "func main" . — рекурсивный поиск текста в файлах. С ключами -i (игнорировать регистр), -n (показать номер строки) и -C 3 (контекст в 3 строки) — мой основной инструмент для анализа кода.
    grep -rn "interface{}" ./pkg/ --include="*.go"
    
  • head, wc -l — просмотр первых строк файла и подсчет строк. wc -l полезен, чтобы быстро оценить объем логов или кода.

3. Мониторинг системы и процессов

  • ps aux | grep myapp — поиск процессов по имени. Часто используется для проверки, запущено ли Go-приложение.
    ps aux | grep -E "(myapp|go run)"
    
  • htop / top — интерактивный мониторинг ресурсов (CPU, память). htop предпочтительнее из-за удобства.
  • df -h и du -sh . — проверка свободного места на диске и размера текущей директории. Ключ -h (human-readable) делает вывод удобочитаемым.
  • netstat -tulpn или ss -tulpn — просмотр открытых сетевых портов и связанных с ними процессов. Критично важно для отладки сетевых Go-приложений (HTTP/gRPC серверов).
    sudo netstat -tulpn | grep :8080
    
  • lsof -i :8080 — альтернатива: показывает, какой процесс использует порт 8080.

4. Управление пакетами и сетевая диагностика

  • apt-get update/install (Debian/Ubuntu) или apk add (Alpine) — установка системных пакетов, необходимых для сборки Go-проектов (например, gcc, git, ca-certificates).
    apt-get update && apt-get install -y git ca-certificates
    
  • curl, wget — HTTP-запросы для тестирования API, скачивания файлов. curl с ключами -v, -H, -X — часть ежедневной работы.
    curl -X GET http://localhost:8080/health -v
    
  • ping и nslookup/dig — базовая сетевая диагностика и проверка разрешения DNS-имен.

5. Работа с Go-проектами и системами контроля версий

  • go build, go run, go test — собственно, команды самого Go. Использую их через оболочку, но в скриптах (CI/CD) они также присутствуют.
    go build -o ./bin/app ./cmd/app
    go test -v -race ./...
    
  • git — вся основная цепочка: clone, pull, status, diff, add, commit, push. Особенно часто git log --oneline --graph для визуализации истории.
  • make — часто Go-проекты используют Makefile для стандартизации команд сборки, тестирования, линтинга. Моя типичная команда:
    make build && make test
    

6. Прочее (но очень важное)

  • man <команда> — справочное руководство. Всегда под рукой, чтобы уточнить ключи.
  • history | grep docker — поиск по истории введенных команд.
  • tar -xzf archive.tar.gz — работа с архивами.
  • alias — создание псевдонимов для часто используемых длинных команд (например, alias ll='ls -la').
  • | (pipe) и > / >> — перенаправление ввода-вывода. Комбинация команд через пайплайн — основа эффективной работы в shell.

Пример рабочего сценария

Допустим, мне нужно найти, какой процесс занял порт 9090, остановить его и перезапустить Go-сервис:

# 1. Ищем процесс, использующий порт 9090
sudo lsof -i :9090
# 2. Если PID известен (например, 12345), завершаем его
kill -9 12345
# 3. Переходим в директорию проекта, собираем и запускаем
cd ~/projects/myapp
go build -o ./app ./cmd
./app -port=9090 &
# 4. Проверяем логи в реальном времени
tail -f ./logs/app.log

Этот набор позволяет мне эффективно разрабатывать, отлаживать и развертывать Go-приложения в Linux-окружении. Многие команды интегрированы в скрипты автоматизации (CI/CD, Dockerfile), но ручное владение ими критически важно для оперативного решения проблем.