echo "First Line" > file.txt # Создать/Перезаписать файл
echo "Second Line" >> file.txt # Дописать в конец файла # stdout идет в results.txt
# stderr удаляется (идет в /dev/null)
find / -name "config.yaml" > results.txt 2>/dev/null
# Объединение потоков (stdout + stderr -> log.txt)
./my-app.sh > log.txt 2>&1 ps aux | sort -rnk 4 | head -n 5
# ps aux - вывести все процессы
# sort -rnk 4 - сортировать (reverse, numeric) по 4-й колонке (%MEM)
# head -n 5 - показать топ 5 /proc/meminfo: Откуда free берет данные?
cat /proc/meminfo | grep MemTotal /proc/cpuinfo: Какой у меня процессор?
grep "model name" /proc/cpuinfo /proc/[PID]/fd: Куда пишет процесс?
ls -l /proc/1/fd # Посмотреть дескрипторы процесса init/systemd sudo touch /root/testfile
rm /root/testfile # Permission denied systemctl status ssh sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx sudo systemctl enable nginx
sudo systemctl disable nginx sudo journalctl -u nginx sudo journalctl -u nginx --since today
sudo journalctl -u nginx -f sudo journalctl -u nginx -n 200 -p warning sudo tee /usr/local/bin/hello-loop.sh >/dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
while true; do
echo "$(date -Is) hello from systemd"
sleep 2
done
EOF
sudo chmod +x /usr/local/bin/hello-loop.sh sudo tee /etc/systemd/system/hello-loop.service >/dev/null <<'EOF'
[Unit]
Description=Hello Loop Demo Service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/hello-loop.sh
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target
EOF sudo systemctl daemon-reload
sudo systemctl start hello-loop
sudo systemctl enable hello-loop sudo journalctl -u hello-loop -f #!/usr/bin/env bash
set -euo pipefail
cleanup() {
# сюда можно добавить удаление временных файлов
:
}
trap cleanup EXIT file_path="$1"
echo "Processing: $file_path"
grep -n "ERROR" "$file_path" || true uptime
# load average: 1.05, 0.70, 0.55 (за 1, 5, 15 минут)
# Если на 4-ядерном CPU load > 4.0 - это затор. free -h iostat -xz 1 192.168.1.1 - - [10/Oct/2023:13:55:36] "GET / HTTP/1.1" 200 2326
192.168.1.2 - - [10/Oct/2023:13:55:36] "GET /admin HTTP/1.1" 403 123
192.168.1.1 - - [10/Oct/2023:13:55:38] "POST /login HTTP/1.1" 500 541
10.0.0.5 - - [10/Oct/2023:13:56:01] "GET / HTTP/1.1" 200 404 #!/bin/bash
LOG_FILE=$1
if [ -z "$LOG_FILE" ]; then
echo "Usage: $0 <path_to_log>"
exit 1
fi
echo "=== TOP 5 IPs ==="
awk '{print $1}' "$LOG_FILE" | sort | uniq -c | sort -nr | head -5
echo "=== ERROR COUNT ==="
# Код ответа обычно в 9 колонке
awk '$9 >= 400 {print $9}' "$LOG_FILE" | sort | uniq -c