Запуск сценария при выключении и перезагрузке для предотвращения потери сеанса хрома

0

Я использую Ubuntu 18.04.1 и пытаюсь создать скрипт, который корректно завершает работу Chromium перед выключением системы, чтобы он не выдавал всплывающее окно «Восстановление сеанса» после загрузки. Я подумал, что буду использовать killall для этого и придумал /home/shutdownscript.sh:

#!/bin/bash 
killall -HUP "chromium-browser --enable-pinch"

это, кажется, делает трюк.

Однако теперь у меня проблема с запуском этого скрипта при завершении работы или перезагрузке.

Первое , что я попытался было положить его в /etc/init.dкачестве shutdownscriptс chmod +xи затем символической ссылкой его rc0.dи , rc6.dкак K99shutdownscriptи позже K01ashutdownscript. Однако это не сработало для меня.

Я думал , может быть , я должен просто создать новый Systemd сервис, так что я создал shutdownscript.serviceв /etc/systemd/systemс содержанием , как это:

[Unit]
Description=Saves Chromium session

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/istir/shutdownscript.sh

[Install]
WantedBy=multi-user.target

Тогда я побежал systemctl start shutdownscript.serviceи , systemctl enable shutdownscript.serviceно она по- прежнему не работает , как предполагалось.

Решение, вероятно, очень простое, но я вернулся в Linux примерно через 6 лет использования Windows и macOS, так что я не помню, что я делал раньше, чтобы создавать сценарии завершения работы.

Спасибо за любую помощь!

istir
источник
Клянусь, это происходит по умолчанию с Firefox и Chrome в Linux.
Руи Ф. Рибейро
Думаю, так и должно быть, но для меня это даже не на новой установке с установленным только Chromium. Когда я обычно закрываю хром, а затем перезагружаюсь, все происходит так, как должно, но если я оставляю хром открытым и перезагружаюсь, он говорит мне восстановить сеанс. Это не критично, просто какая-то боль делать каждый раз.
Истир
1
Вместо того, чтобы обойти это, я предлагаю вам взглянуть на оригинальный выпуск Chromium, который не закрывался должным образом при перезагрузке. (Должно быть!) Может быть, начать с этого вопроса, который может иметь некоторые идеи о том, что уже попробовать. В противном случае попробуйте предоставить более подробную информацию о том, какую среду рабочего стола и / или оконный менеджер вы используете, откуда вы установили Chromium, как вы перезагружаете компьютер и т. Д., Чтобы устранить это. Я предлагаю задать новый вопрос (так как этот вопрос о других вещах). Может быть, стоит спросить в AskUbuntu, может получить больше ответов там.
filbranden

Ответы:

0

В связи с этим нам может потребоваться выполнить следующее после настройки systemctl.

 sudo systemctl daemon-reload

И у нас должен быть заголовок в сценарии, как показано ниже .

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    
# Required-Stop:     
# Default-Start:     0 1 6
# Default-Stop:      
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
msp9011
источник
Все systemctl enableupdate-rc.d: error: shutdownscript Default-Start contains no runlevels, aborting.
равно
@istir попробуй шапку как обновлено в ответе.
msp9011
Мне удалось включить скрипт и запустить его, но он все еще не выполняет то, что я хочу. Может мне стоит сменить Default-start на 0 6? IIRC это номера для выключения и перезагрузки. Мне пришлось изменить , shutdownscript.serviceчтобы , shutdownscriptnew.serviceпотому что я не мог позволить ему иначе. Однако, когда sudo systemctl stop shutdownscriptnew.serviceон работает, он действительно делает то, что должен, и закрывает хром.
Истир
да, мы должны начать с уровня выполнения 0,1 и 6
msp9011
Все еще не повезло, я попытался изменить Default-Start и Default-Stop и даже ExecStart и ExecStop - если я запускаю systemctl stop shutdownscriptnew.serviceего, он закрывает хром, но если я перезагружаюсь, он ничего не делает, и все равно завершает его, так что мне нужно восстановить сеанс.
Истир