- Как заменить фон экрана входа в систему в Ubuntu 20.04
- Как запустить процесс в фоне Linux
- Как запустить процесс в фоне Linux
- Как перевести процесс в фоновый режим
- Работа процессов в фоне
- Выводы
- Изменение фонового изображения на экране входа в систему в Ubuntu 9.04
- WSL Tips: Starting Linux Background Services on Windows Login
- Discussion (19)
Как заменить фон экрана входа в систему в Ubuntu 20.04
Что в последней, что в предыдущих версиях Linux Ubuntu экран входа в систему имел один и тот же не слишком приятный взору фиолетовый фон. Вы можете заменить обои и заливку экрана блокировки, но в настройках Ubuntu нет опции, которая позволяла бы заменить изображение экрана входа в систему. В более ранних версиях этой системы сделать это было можно в обход, отредактировав файл стилей ubuntu.css , расположенный в каталоге usr\share\gnome-shell\theme .
Открыли файл текстовым редактором, заменили значение resource в блоке кода lockDialogGroup — background и считайте, что дело в шляпе.
Чтобы сделать то же самое в Ubuntu 20.04 , файл стилей сначала нужно вытащить из файла темы gresource , а затем перекомпилировать его. Есть куда более простой способ. Создайте в домашней папке отдельный каталог и скопируйте в него подходящее по разрешению изображение фона в формате PNG или JPEG . Затем откройте терминал и установите библиотеку libglib командой sudo apt install libglib2.0-dev-bin .
Подтверждаем установку вводом «Д» и тут же выполняем команду wget github.com/thiggy01/ubuntu-20.04-change-gdm-background/raw/master/ubuntu-20.04-change-gdm-background . Эта команда загрузит в папку /home скрипт, созданный бразильским разработчиком Тьяго Сильва. А теперь заменим с помощью этого скрипта фон экрана входа в систему, выполнив такую команду:
sudo bash /home/kompik/ubuntu-20.04-change-gdm-background ‘/home/kompik/background/fon.png’
- kompik — это имя пользователя, у вас оно будет свое.
- background и fon.png — папка с фоновым изображение и само изображение, их название опять же у каждого будет свое. После нажатия enter нужно будет подтвердить выполнение скрипта, после чего вас выкинет из рабочей сессии прямо на обновленный экран входа в систему.
Если пожелаете, название и месторасположение скрипта можете изменить, это не критично, но тогда и команду формируйте соответствующим образом. Если вдруг скрипт не сработает, откройте его свойства и на вкладке «Права» сделайте его исполняемым.
Как запустить процесс в фоне Linux
Как правило, выполнение команд в терминале связано с одним неудобством — прежде чем приступить к вводу следующей команды, следует дождаться выполнения предыдущей. Это происходит, поскольку текущий процесс блокирует доступ к оболочке операционной системы и в таких случаях говорят, что команда выполняется на переднем плане. Что же делать, если нужно запустить несколько команд одновременно? Есть несколько решений. Первое и наиболее очевидное — открыть дополнительное окно терминала. Второе — инициировать выполнение команды в фоновом режиме.
Если какой-либо процесс происходит в фоновом режиме, это значит, что он не предусматривает взаимодействия с пользователем, следовательно, доступ к оболочке остается свободным. Прочитав эту статью, вы узнаете как запустить процесс в фоне Linux и что делать, чтобы их выполнение не прерывалось после закрытия терминала.
Как запустить процесс в фоне Linux
Для выполнения команды в фоновом режиме достаточно добавить в конце символ амперсанда (&):
В выводе терминала будут отображены порядковый номер задачи (в квадратных скобках) и идентификатор процесса:
В фоновом режиме можно одновременно запускать сразу два, три, четыре процесса и даже больше.
Работая в фоновом режиме, команда все равно продолжает выводить сообщения в терминал, из которого была запущена. Для этого она использует потоки stdout и stderr, которые можно закрыть при помощи следующего синтаксиса:
command > /dev/null 2>&1 &
Здесь >/dev/null 2>&1 обозначает, что stdout будет перенаправлен на /dev/null, а stderr — к stdout.
Узнать состояние всех остановленных и выполняемых в фоновом режиме задач в рамках текущей сессии терминала можно при помощи утилиты jobs c использованием опции -l:
Вывод содержит порядковый номер задачи, идентификатор фонового процесса, состояние задачи и название команды, которая запустила задание.
В любое время можно вернуть процесс из фонового режима на передний план. Для этого служит команда fg:
Если в фоновом режиме выполняется несколько программ, следует также указывать номер. Например:
Для завершения фонового процесса применяют команду kill с номером программы:
Как перевести процесс в фоновый режим
Если изначально процесс был запущен обычным способом, его можно перевести в фоновый режим, выполнив следующие действия:
- Остановить выполнение команды, нажав комбинацию клавиш Ctrl+Z.
- Перевести процесс в фоновый режим при помощи команды bg.
Работа процессов в фоне
Запуск скрипта в фоне linux — это одно, но надо чтобы он ещё работал после закрытия терминала. Закрытие терминала путем нажатия на крестик в верхнем углу экрана влечет за собой завершение всех фоновых процессов. Впрочем, есть несколько способов сохранить их после того как связь с интерактивной оболочкой прервется. Первый способ — это удаление задачи из очереди заданий при помощи команды disown:
Как и в предыдущих случаях, при наличии нескольких одновременно выполняемых процессов следует указывать номер того, относительно которого будет выполнено действие:
Убедиться, что задачи больше нет в списке заданий, можно, использовав уже знакомую утилиту jobs -l. А чтобы просмотреть перечень всех запущенных процессов (в том числе и отключенных) применяется команда
Второй способ сохранить запущенные процессы после прекращения работы терминала — команда nohup. Она выполняет другую команду, которая была указана в качестве аргумента, при этом игнорирует все сигналы SIGHUP (те, которые получает процесс при закрытии терминала). Для запуска команды в фоновом режиме нужно написать команду в виде:
Как видно на скриншоте, вывод команды перенаправляется в файл nohup.out. При этом после выхода из системы или закрытия терминала процесс не завершается. Существует ряд программ, которые позволяют запускать несколько интерактивных сессий одновременно. Наиболее популярные из них — Screen и Tmux.
- Screen либо GNU Screen — это терминальный мультиплексор, который позволяет запустить один рабочий сеанс и в рамках него открыть любое количество окон (виртуальных терминалов). Процессы, запущенные в этой программе, будут выполняться, даже если их окна невидимы или программа прекратила работу.
- Tmux — более современная альтернатива GNU Screen. Впрочем, возможности Tmux не имеют принципиальных отличий — в этой программе точно так же можно открывать множество окон в рамках одного сеанса. Задачи, запущенные в Tmux, продолжают выполняться, если терминал был закрыт.
Выводы
Чтобы запустить скрипт в фоне linux, достаточно добавить в конце знак &. При запуске команд в фоновом режиме отпадает необходимость дожидаться завершения одной команды для того, чтобы ввести другую. Если у вас возникли вопросы, обязательно задавайте их в комментариях.
Изменение фонового изображения на экране входа в систему в Ubuntu 9.04
Нигде не сообщалось, но в новой операционной системе Ubuntu 9.04 (и не только) можно легко изменять фон окна входа в систему. Для этого не потребуется изменять ресурсы в исполняемых файлах или выполнять еще какие-то особые действия. Процесс изменения изображения достаточно прост и может быть выполнен даже без привлечения дополнительных инструментов. Эта функциональность доступна и корректно работает и в предыдущих версиях Ubuntu, и в любом другом дистрибутиве, в котором используется окружение рабочего стола GNOME (и менеджер входа в систему gdm). В дистрибутивах, использующих по умолчанию менеджер kdm, это делается не сложнее, но об этом мы поговорим в следующей статье 🙂
Для того, чтобы изменить фон на экране входа в систему необходимо проделать следующие шаги.
- Открыть в главном меню пункт «Система» — «Администрирование» — «Окно входа в систему», перейти на вкладку «Локальный вход» и запомнить, какая тема используется в данный момент (у меня «Human»).
- Отредактировать соответствующий файл темы:
заменив в строке
дефолтный «background.png» на нужный Вам путь к файлу:
Размер файла не ограничен ничем. Это может быть PNG, JPEG и даже SVG.
Вот и всё. Чтобы убедиться, что всё работает — перелогиньтесь.
WSL Tips: Starting Linux Background Services on Windows Login
Note: I’m cross posting this from my blog to dip my toe into dev.to
More and more developers are finding out that the Windows Subsystem for Linux (WSL) is pretty great. Being able to transparently use a ton of established *nix tooling on Windows can make your machine a kind of best-of-both hybrid as both a user and a developer.
Updates to WSL have included adding support for background tasks when all your Linux console windows are closed, where previously the WSL processes had to be running under a live shell. However, you still needed to start those services yourself because Linux sessions could only be initiated explicitly. There was no start-up config to launch services like Postgresql or RabbitMQ and the like.
After several restarts after which I neglected to start up these services manually, I wanted a solution that would get Postgres running in the background in the WSL layer automatically when I started up my machine.
Here’s how you can start WSL background services on Windows login:
First you’ll need a startup script. I called mine start_postgresql.sh and put it in
/.local/bin/ . All mine does is start the Postgres service, but you can start as many other services or do as many other start-up time actions as you want.
Exit fullscreen mode
Of course, running service requires sudo privledges. But, since we need to run this at start-up without interaction and I don’t want to enable password-less sudo what do we do?
It turns out you can enable password-less sudo for specific commands without enabling the security faults of allowing your user to sudo just anything without any safety check. Open visudo to edit your sudo config:
Exit fullscreen mode
And then add this line to enable sudo run only this script.
Exit fullscreen mode
Great! Of course, your name probably isn’t “calvin” like mine. Change that to your own username.
All that’s left to do is get Windows to run this script in the WSL layer when you login. We can use the Task Scheduler to do this, so open the start menu and type “Task Scheduler” to find the application and run it.
Now, click “Task Scheduler Library” on the left and then “Create Task…” on the right to create a new task you can configure to run your script with these steps:
- Name the task anything you want, like “Start Postgres”
- Under the “Triggers” tab, click “New…” to add a new trigger for this task
- In the “Begin the task” dropdown select “At log on”
- Select “Any user”
- Under the “Actions” tab, click “New…” to add a new action for this task
- Pick “Start a program” for the action type and then enter C:\Windows\System32\bash.exe as the program to run
- Finally, as the last and most important step, at “Add arguments (optional)” set this argument string to run the command with: -c «sudo
That’s all you need. When you log into Windows next this task will be triggered and run your custom script as root and start Postgres and any other services you decide to spin up.
Hopefully this will make developing on Windows with Linux tooling even easier than WSL already does!
Discussion (19)
This will not necessarily work when you are runnning multiple WSL distros in parallel. You can resolve this by changing the command line in the task schedulder. In the following example I assume you want to run postgresql in Debian, which is not your primary/default WSL distro:
Instead of ‘C:\Windows\System32\bash.exe’ write ‘wsl’
Instead of ‘-c «sudo
./local/bin/start_postgresql.sh»‘ write ‘-d debian -e sudo /home/calvin/.local/bin/start_postgresql.sh».
(Yes, I had trouble with the
shortcut for the home directory, no idea why.)
Favorite heart outline button
if the command is sudo, anything after that is already run as root, so the