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

Какие знаешь команды Linux?

2.0 Middle🔥 231 комментариев
#Контейнеризация и DevOps#Операционные системы и Linux

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

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

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

Мой опыт с командами Linux в контексте Go-разработки

Работая Go-разработчиком более 10 лет, я постоянно взаимодействую с Linux-окружением — будь то локальная разработка, CI/CD пайплайны, контейнеризация или управление продакшен-серверами. Вот ключевые категории команд, которые я использую ежедневно:

1. Работа с файлами и директориями (основа основ)

# Навигация и просмотр
pwd, ls -la, cd, tree
# Создание и удаление
mkdir -p, touch, rm -rf, cp -r
# Поиск файлов
find . -name "*.go" -type f, locate
# Просмотр и редактирование
cat, less, head/tail -f, nano/vim

2. Процессы и система (критично для отладки Go-приложений)

# Мониторинг процессов
ps aux | grep go, top, htop
# Управление процессами
kill -9, pkill, killall
# Системная информация
free -h, df -h, uptime, uname -a
# Анализ потребления ресурсов Go-приложений
pidstat -p <PID>, /proc/<PID>/status

3. Сетевые команды (для работы с сетевыми Go-приложениями)

# Проверка сетевых соединений
netstat -tulpn, ss -tulpn
# Диагностика сети
ping, traceroute, dig, nslookup
# Работа с сетевыми интерфейсами
ifconfig, ip addr
# Тестирование HTTP-эндпоинтов (часто для Go-сервисов)
curl -v, wget

4. Работа с текстом (анализ логов Go-приложений)

# Поиск в файлах
grep -r "error" . --include="*.log"
# Потоковая обработка
awk, sed
# Сортировка и уникальность
sort, uniq -c
# Подсчет
wc -l

5. Права доступа (безопасность Go-деплоя)

chmod 755, chown user:group, chgrp
umask, getfacl/setfacl

6. Архивация и компрессия (для артефактов сборки Go)

tar -czvf, tar -xzvf, gzip, gunzip
zip, unzip

7. Пользователи и группы

useradd, usermod, userdel
groupadd, passwd, whoami, id

8. Мониторинг и производительность (особенно важно для Go)

# Мониторинг в реальном времени
watch -n 1 'ps aux | grep app'
# Анализ использования CPU/Memory
vmstat, iostat, mpstat
# Отслеживание системных вызовов
strace -p <PID>  # Часто использую для отладки блокировок в Go

9. Пакетные менеджеры

# В зависимости от дистрибутива
apt-get install/update/upgrade (Debian/Ubuntu)
yum install/update (RHEL/CentOS)
apk add (Alpine)  # Часто в Docker-образах для Go

10. Особые команды для Go-разработки

# Просмотр открытых файловых дескриптеров Go-процесса
lsof -p <PID>
# Анализ использования памяти Go-приложения
cat /proc/<PID>/smaps | grep -i rss
# Профилирование через perf (для CPU-профилей Go)
perf record -p <PID> && perf report
# Работа с cgroups (для ограничения ресурсов контейнеров)
cgcreate, cgexec

11. Шелл и среда

# Переменные окружения (критично для конфигурации Go-приложений)
env, export, printenv
# История команд
history, !<номер>, Ctrl+R
# Псевдонимы и функции
alias, source, type

12. Работа с дисками и файловыми системами

mount, umount, fdisk -l, blkid, lsblk

Практическое применение в Go-разработке:

Пример рабочего процесса:

# 1. Поиск утечек памяти в Go-приложении
ps aux | grep myapp | grep -v grep
# 2. Анализ потребления памяти
top -p <PID>
# 3. Проверка открытых соединений
netstat -an | grep <PORT> | wc -l
# 4. Мониторинг логов в реальном времени
tail -f /var/log/myapp.log | grep -E "(ERROR|PANIC)"
# 5. Сборка и деплой
go build -o app && tar -czf app.tar.gz app
scp app.tar.gz user@server:/deploy/
ssh user@server "systemctl restart myapp"

Ключевые моменты из опыта:

  • jq для работы с JSON (актуально для REST API на Go)
  • tmux или screen для долгих операций
  • cron для планирования задач (бэкапы, метрики)
  • systemctl для управления сервисами (systemd-юниты Go-приложений)
  • docker/docker-compose (хотя это отдельные технологии, тесно связанные)

Каждая из этих команд становится частью автоматизированных скриптов для CI/CD, мониторинга и обслуживания высоконагруженных Go-приложений в продакшене. Владение этими инструментами позволяет не только писать код, но и эффективно развертывать, отлаживать и поддерживать его в рабочем состоянии.