Злой полицейский
1.63K subscribers
1.42K photos
98 videos
7 files
3.28K links
Тимлид/разработчик/SOER. Делюсь мыслями про веб, программирование, инструменты, #WordPress, Joomla, Laravel, MoonShine, мотивацию, психологию, фильмы, сериалы.

Сайт - https://kobzarev.com

Администратор - @mihdan.
Download Telegram
Forwarded from Bash Days | Linux | DevOps (Роман Шубин)
Привет, друзья! Есть у меня какой-то долгоиграющий скрипт, который я по дурости запустил в терминале, без nohup и применения screen. Ждать завершения скрипта не вариант, но и завершать его принудительно нельзя. Как быть? Сейчас покажу, поехали.

Сделаем подопытный образец, который в цикле будет писать в файл числа от 1 до 10000, чтобы визуально понимать что происходит. Ну и паузу впендюрим 2 секунды, для чистоты эксперимента.

#!/bin/bash

for i in {1..10000}
do
echo $i >> /tmp/log.txt
sleep 2
done

Запускаем, ага. Теперь открываем второй терминал и пишем:

tail -f /tmp/log.txt

Видим как файл log.txt постепенно наполняется циферками.

Всё прекрасно. Что нужно сделать дальше. А дальше жми сочетание клавиш ctrl+z в первом терминале, где ты запустил скрипт.

Комбинация клавиш Ctrl + Z посылает процессу сигнал, который приказывает ему остановиться. Это значит, что процесс остается в системе, но как бы замораживается.

Ловим такое:

[1]+ Stopped ./script.sh

Видим что скрипт остановил свою работу. А во втором терминале с tail, цифры перестали заполнять файл log.txt. Ключевое слово - остановил, но не прекратил. Окей, мы на верном пути.

А теперь в первом терминале запускай команду bg, в ответ ты увидишь такое:

[1] + ./script.sh & 

Видишь в конце закорючку &, наталкивает на мысли? 🤒

Команда bg предназначена для возобновления исполнения остановленной задачи в фоновом режиме в командных оболочках.

Скрипт продолжил работу в фоне, с того момента где ты его приостановил. Идем во второй терминал с tail и видим, что цифры продолжили заполнять файл.

Круто! Но это пока еще не все, если закрыть первый терминал, скрипт прекратит свою работу, нужно его как-то отвязать от текущей сессии и демонизировать.

Запускаем финалочку:


disown %1


Команда disown блокирует отправку системного сигнала SIGHUP с помощью командной оболочки и исполняющемуся в фоновом режиме процессу при завершении работы командной оболочки.

Теперь в первом терминале пишем exit либо просто закрываем его нахрен. Ха! А во втором терминале работа скрипта продолжается. Магия!

Вот таким образом ты можешь легко отвязать уже запущенный скрипт от терминальной сессии и уйти по своим делам, пощелкать впн и т.п. Кстати работает не только со скриптами.

Наверное есть еще варианты провернуть подобное. Я показал способ которым пользуюсь сам.

Ключевые слова для самостоятельного гугления: bg, fg, jobs, disown, nohup.

Да, после того как нажал ctrl+z, можно все откатить назад, запускаешь команду fg и ловишь флешбек.

Такие вот дела. Хорошего тебе вторника и не болей!

tags: #linux #bash

💩 @bashdays
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Как полностью удалить из системы Steam в Ubuntu

1. Удалить софт и его конфиги:

sudo apt-get purge steam steam-launcher


2. Удалить пару скрытых папок (у меня они весили 4 терабайта):

rm -rf ~/.local/share/Steam && rm -rf ~/.steam*


#bash #steam #govno

Источник: @mihdan_dev
👍1🥰1
Oh My ZSH в Ubuntu

Oh My Zsh — бесплатный опенсорсный фреймворк для управления конфигурацией zsh, которая превращает вашу консоль в очень продуктивный инструмент.

👉 https://www.kobzarev.com/linux/oh-my-zsh/

#linux #bash #zsh

🕹 Злой полицейский — Подписаться