Linux — от практиката

Linux — основата

Не започвам от нулата. Започвам от това, което наистина има значение. Linux не е просто операционна система. Това е средата, в която работя всеки ден, и в която всяко решение има последствия.

1. Как мисля за Linux

Преди години, когато за първи път седнах пред терминал, нямах представа, че това ще се превърне в моята работна среда за десетилетия напред. Днес, след стотици инсталации, конфигурации и аварийни интервенции, мога да кажа едно: Linux не е хоби. Това е инструмент, който трябва да работи, когато всичко друго около теб се руши.

В железопътните системи няма място за грешка. Същото важи и за сървърите, които поддържам. Когато казвам, че нещо работи, трябва да е вярно. Linux ми дава тази сигурност, стила да знам какво правя.

Първото правило, което научих: не докосвай това, което не разбираш. Второто правило: ако трябва да го докоснеш, първо разбери как да го върнеш обратно.

2. Файловата система — всичко започва оттам

Много хора гледат на Linux като на черен екран с команди. Аз го виждам като дърво. Всичко е файл. Конфигурациите, устройствата, мрежата, процесите. Ако разбираш файловата система, разбираш половината от системата.

В моята практика най-често работя с /etc за конфигурации, /var/log за логове и /home за потребителите. Когато нещо не работи, първо гледам логовете. Когато трябва да променя нещо, първо си правя резервно копие на конфигурационния файл.

МОЯТ ПОДХОД КЪМ КОНФИГУРАЦИИТЕ
# Винаги правя копие, преди да променя
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# След това редактирам
vim /etc/nginx/nginx.conf

# И накрая проверявам синтаксиса
nginx -t
Практическо правило: ако промениш конфигурация и услугата не рестартира, значи си направил грешка. Винаги проверявай синтаксиса преди да рестартираш.

3. Команди, които използвам всеки ден

Няма да губя време с дълги списъци. Ще ти кажа кои са най-честите команди в моята работа, защото те решават 95% от задачите ми.

  • ls -la — за да видя всичко в дадена директория, включително скритите файлове. Без опции не ми върши работа.
  • cd — скитам се из системата. Това е като да ходя в склада за резервни части – трябва да знам къде се намира всичко.
  • grep — търся в логове и конфигурации. grep -r е безценен, когато трябва да намеря къде е дефиниран даден параметър.
  • systemctl — управлявам услугите. systemctl status е първото нещо, което пускам, когато нещо не работи.
  • journalctl — гледам системните логове. journalctl -u за конкретна услуга ми спестява часове.
  • du -sh и df -h — проверявам свободното място. Особено важно, когато поддържам сървъри с ограничени ресурси.
  • ps aux — гледам какви процеси вървят. Комбинирам с grep, за да филтрирам.
  • kill — спирам замръзнал процес. Първо с -15 (SIGTERM), после с -9 (SIGKILL), ако не помогне.
Запомни: kill -9 не дава шанс на процеса да запази данни. Използвай го само когато няма друг избор.

4. Права и потребители — сигурността започва тук

В моята работа сигурността не е просто парола. Това е контрол на достъпа. В Linux правата на файловете и потребителите определят кой какво може да прави. Ако не разбираш chmod и chown, не можеш да гарантираш сигурността на системата.

ОСНОВНИ ПРАВА, КОИТО ИЗПОЛЗВАМ
# Давам изпълними права на скрипт
chmod +x script.sh

# Променям собственика на файл
chown user:group file.txt

# Свалям всички права, освен за собственика
chmod 700 sensitive_file

В железопътните системи имаме строги процедури за достъп. Същото прилагам и към сървърите. Никой не трябва да има повече права, отколкото му е необходимо.

5. Мрежа — свързаност, която трябва да работи

Ако сървърът няма мрежа, той е безполезен. Проверката на мрежовата свързаност е сред първите ми стъпки при диагностика.

КОГАТО НЕЩО НЕ Е НА РАЗБОРА
# Проверявам дали имам връзка
ping -c 4 8.8.8.8

# Гледам конфигурацията на мрежовия интерфейс
ip addr show

# Проверявам дали слушам на правилния порт
ss -tulpn

Командата ss -tulpn ми показва кои процеси слушат на кои портове. Това е особено полезно, когато се опитвам да разбера защо дадена услуга не е достъпна.

6. Пакети — инсталиране и поддръжка

В зависимост от дистрибуцията, използвам apt за Debian/Ubuntu или dnf/yum за RHEL системи. За предпочитане използвам Debian, защото ми е познат и стабилен.

ИНСТАЛИРАНЕ НА ПО-НОВИ ПАКЕТИ
# Обновявам списъка с пакети
apt update

# Инсталирам пакет
apt install nginx

# Търся пакет
apt search postgresql
Важно: Винаги чета какво ще бъде инсталирано или премахнато, преди да потвърдя. apt remove може да изтрие зависимости, които са важни за други приложения.

7. Логове — твоят най-добър приятел

Когато нещо се обърка, логовете са моят компас. Те винаги казват истината, стига да знаеш как да ги прочетеш. В моята практика /var/log е свещена територия.

КАК ГЛЕДАМ ЛОГОВЕ
# Логове на системата
journalctl -xe

# Логове на конкретна услуга
journalctl -u nginx -f

# Търся в логовете за грешки
grep -i error /var/log/syslog

journalctl -f ми позволява да следя логовете в реално време, което е безценно при отстраняване на проблеми, докато те се случват.

8. Автоматизация — спестява време и грешки

Ръчното изпълнение на повтарящи се задачи е рецепта за грешки. Затова пиша скриптове. Те ми спестяват време и гарантират, че всяка стъпка се изпълнява еднакво всеки път.

ПРОСТ БЕКЪП СКРИПТ
#!/bin/bash
# Бекъп на критични директории

BACKUP_DIR="/backup/$(date +%Y-%m-%d)"
mkdir -p "$BACKUP_DIR"

tar -czf "$BACKUP_DIR/etc.tar.gz" /etc
tar -czf "$BACKUP_DIR/var_log.tar.gz" /var/log

echo "Бекъпът е готов в $BACKUP_DIR"

Слагам такива скриптове в cron, за да се изпълняват автоматично, без да се налага да ги помня.

9. Когато нещо се счупи — моят план за действие

Авариите не се случват, когато имаш време. Затова имам план. Когато нещо спре да работи, следвам едни и същи стъпки, за да не се паникьосам и да не пропусна нещо важно.

  1. Спокойно. Паниката не помага.
  2. Проверявам дали услугата работи. systemctl status.
  3. Гледам логовете. journalctl -u.
  4. Проверявам мрежата. ping, ss.
  5. Проверявам свободното място. df -h.
  6. Проверявам натоварването. top или htop.
  7. Ако нищо не помага, рестартирам услугата. systemctl restart.
В 90% от случаите проблемът е в конфигурацията или в липсата на ресурси. Тези стъпки ме насочват към истината.

10. Съвети от практиката

  • Документирай всичко. Записвам какво съм направил и защо. След месец няма да си спомням, а документът ще ми помогне.
  • Използвай history. Винаги мога да видя кои команди съм изпълнявал и да ги повторя.
  • Не бъди суперпотребител без нужда. Работя като обикновен потребител и използвам sudo само когато е необходимо.
  • Прави редовни бекъпи. Дори и най-стабилната система може да се счупи.
  • Тествай промените в тестова среда. Никога не променям продукционен сървър директно, без преди това да съм пробал в среда, която не е критична.

Заключение

Linux не е труден, но изисква дисциплина и разбиране. Не е достатъчно да знаеш командите – трябва да разбираш какво се случва зад тях. Това е като железопътната спирачка: можеш да натиснеш педала, но ако не знаеш как работи системата, няма да разбереш защо влакът не спира.

В тази статия споделих основите, които използвам всеки ден. Те не са теория от учебник – те са неща, които са ме спасявали в реални ситуации. В следващите части ще навлезем по-дълбоко в конкретни теми като управление на процеси, мрежови конфигурации и сигурност.

Запомни: добрият администратор не е този, който знае всичко, а този, който знае как да намери отговора, когато нещо се обърка.