Бывало такое: запустил долгую задачу, закрыл терминал - и всё пропало. А что если процесс всё ещё жив, и ты можешь снова им управлять?
Сегодня разберём два инструмента:
ts - из moreutils для запуска с timestampreptyr - для перехвата уже запущенного процесса и перевода его обратно в терминал🌟 Сценарий: восстановление "осиротевшего" процесса
1️⃣ Запустили задачу без screen или tmux:
some-heavy-task.sh &
2️⃣ Вышли из терминала, но процесс живёт (можно найти через ps или top).
3️⃣ Подключаемся обратно, узнаём PID:
ps aux | grep some-heavy-task
4️⃣ Забираем процесс себе:
reptyr <PID>
Теперь процесс снова управляем - можно читать вывод, отменить Ctrl+C, передать сигналы.
⚙️ Установка
sudo apt install reptyr moreutils # Ubuntu/Debian
sudo yum install reptyr moreutils # RHEL/CentOS
🔥 ts - лог с таймштампами. Хочешь узнать, когда именно что-то произошло в логе?
long-running-command | ts '[%Y-%m-%d %H:%M:%S]'
Пример вывода:
[2025-06-10 10:03:10] Запущено обновление системы
[2025-06-10 10:03:25] Завершено без ошибок
Идеально для cron-скриптов, CI-логов и мониторинга.
❗️ Ограничения и советы
📍 reptyr не всегда работает, если у процесса есть PTY или взаимодействие с stdin.
📍 Чтобы reptyr работал на Ubuntu 20+ - нужно отключить Yama security:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
(для постоянства: добавь в
/etc/sysctl.d/10-ptrace.conf)BashTex 📱 #bash #utils