
- Главная
- Каталог
- Интернет технологии
- BashTex | Linux
BashTex | Linux
Авторский канал про мир Linux и Bash. Основная аудитория: системные администраторы, DevOps, Python-разработчики и другие.
Статистика канала
LOGLEVEL="info" # debug|info|error
exec 3>info.log
exec 4>debug.log
exec 5>error.log{}
log_info() { [[ $LOGLEVEL =~ info|debug ]] && echo "[INFO] $*" >&3; }
log_debug() { [[ $LOGLEVEL == debug ]] && echo "[DEBUG] $*" >&4; }
log_error() { echo "[ERROR] $*" >&5; }{}
set_loglevel() {
LOGLEVEL="$1"
log_info "Loglevel switched to: $LOGLEVEL"
}
# Пример:
set_loglevel debug{}
exec 5> >(tee -a error.log >&2){}
Или дебаг-режим в реальном времени:
exec 4> >(sed 's/^/[DBG]/' >&2){}
BashTex Формат /proc/net/tcp содержит: local addr/port remote addr/port state inode (ключ!)Мы будем искать ошибочные или зависшие состояния.
grep -E "$(echo $hung_states | sed 's/ /|/g')" /proc/net/tcp |
while read -r _ _ _ state _ _ _ _ inode _; do
echo "$inode"
done{}
/proc/$pid/fd/* → socket:[inode].
find_pid_by_inode() {
inode=$1
for p in /proc/[0-9]*/fd/*; do
if readlink "$p" 2>/dev/null | grep -q "socket:\[$inode\]"; then
echo "$p" | cut -d/ -f3
fi
done
}{}
for inode in $(get_hung_inodes); do
pid=$(find_pid_by_inode "$inode")
svc=$(ps -p "$pid" -o comm=)
echo "Hung socket in PID $pid ($svc)"
case "$svc" in
nginx) systemctl restart nginx ;;
sshd) systemctl restart sshd ;;
myapp) systemctl restart myapp ;;
esac
done{}
ADMIN25»: открыть курс на Stepik
P.S. Курс можно купить в подарок на Новый год
queue/
high/
normal/
low/
locks/{}
pick_task() {
for q in high normal low; do
t=$(ls queue/$q | head -n1 2>/dev/null)
[ -n "$t" ] && echo "$q/$t" && return
done
}
run() {
while true; do
task=$(pick_task)
[ -z "$task" ] && sleep 1 && continue
lock="locks/$(basename "$task").lock"
( set -o noclobber; >"$lock" ) 2>/dev/null || continue
cmd=$(cat "queue/$task")
rm "queue/$task"
case $task in
high/*) nice -n -10 bash -c "$cmd" ;;
normal/*) nice -n 0 bash -c "$cmd" ;;
low/*) nice -n 10 bash -c "$cmd" ;;
esac
rm -f "$lock"
done
}
run{}
echo "sleep 3 && echo DONE" > queue/high/job1{}
current/ и несколько ее копий:
snapshot1/ - свежий слепок
snapshot2/ - предыдущий
last-good/ - стабильная проверенная версия
Ротация выглядит так:
snapshot2 ← snapshot1 ← current
BASE="/opt/myapp"
rotate() {
cd "$BASE" || exit 1
rm -rf snapshot2
mv snapshot1 snapshot2 2>/dev/null || true
cp -a current snapshot1
# Обновление last-good, если тесты прошли
if bash run_tests.sh; then
rm -rf last-good
cp -a current last-good
fi
}
rotate{}
cp -a быстрее архивации;
можно открыть любой снапшот обычным ls/cd;
откат в 1 команду: cp -a last-good current
работает для конфигов, кода и сервисов.
BashTex
HOSTS=(srv1 srv2 srv3)
for h in "${HOSTS[@]}"; do
ssh "$h" "journalctl -n 50 --no-pager" | \
awk -v host="$h" '{print strftime("%s"), host, $0}' &
done
wait{}
{
for h in "${HOSTS[@]}"; do
ssh "$h" "journalctl -n 200 --no-pager" \
| awk -v host="$h" '{print strftime("%s"), host, $0}'
done
} | sort -n > timeline.log{}
Теперь timeline.log выглядит так:
1712409123 srv1 sshd[1023]: Accepted password for admin
1712409124 srv3 systemd[1]: Started backup.
1712409125 srv2 docker[532]: Container restarted.{}
BashTex socat позволяет связать любой источник данных с любым приемником. Bash-скрипты с ним превращаются в гибкие системы обмена сообщениями.
socat UNIX-LISTEN:/tmp/app.sock,fork SYSTEM:'bash handler.sh'{}
Клиент:
echo "PING" | socat - UNIX-CONNECT:/tmp/app.sock{}
Отлично подходит для локальных API между скриптами.
socat TCP-LISTEN:9000,fork FILE:/var/log/app.log{}
Клиент:
socat - TCP:server:9000{}
Можно в реальном времени стримить логи или метрики.
socat EXEC:"cmd1" EXEC:"cmd2"{}
Аналог cmd1 | cmd2, но без ограничений пайпа (например, поддержка bidirectional).
socat - TCP:localhost:8080 | while read l; do
echo ">> $l"
done{}
Можно строить собственные протоколы поверх TCP.
socat TCP-LISTEN:7000,reuseaddr,fork SYSTEM:'bash rpc-handler.sh'{}
Клиент:
echo '{"cmd":"status"}' | socat - TCP:host:7000{}
BashTex Отзывы канала
всего 6 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
BashTex | Linux — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 2.6K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 23.5, количество отзывов – 6, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 1258.74 ₽, а за 17 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий