Как запустить этот скрипт при запуске, перезагрузке и завершении работы?

Это было по умолчанию ubuntu. И это было расширение, указанное ниже. Не знаю, как я это получил. Но удаление его работает.

https://extensions.gnome.org/extension/602/window-list/

1
задан 5 April 2012 в 16:38

5 ответов

После многого поиска и запроса здесь мне удалось заставить его работать:

Прежде чем делать следующее, убедитесь, что вы не используете unison-gtk (Unison GUI). У меня была ситуация, в которой конфликтуют unison и unison-gtk. Удалите unison-gtk через sudo apt-get remove unison-gtk и отключите старые файлы конфигурации Unison, переименовав содержащую папку: mv .unison .unison.old

. Когда вы это сделали, пришло время двигаться дальше.

[d3 ] Сначала я запускал скрипт как суперпользователь. Я сделал это, потому что Unison нужно запускать один раз, когда вы создаете новый скрипт, чтобы сделать некоторые файлы регистрации. Скрипты Upstart, вероятно, выполняются как root, поэтому лучше всего это сделать при первом запуске скрипта:

sudo su

unison -perms 0 -batch "/home/MyName/Syncfolder" "/mnt/Data/Syncfolder" >> /var/log/unison.log [!d5 ]

exit

Затем я побежал: sudo gedit /etc/init/unison.conf. Я вставил следующее и сохранил файл:

description "My File Sync"
author "My Name"
env HOME=/home/MyName
start on runlevel [0123456]

pre-start script
    echo "Starts syncscript"
end script

post-stop script
    echo "Ends syncscript"
end script

exec unison -perms 0 -batch "/home/MyName/Syncfolder" "/mnt/Data/Syncfolder" >> /var/log/unison.log

Перезагрузите, и все готово.

1
ответ дан 25 May 2018 в 13:48

Я предлагаю вам забыть SysV, если возможно, и использовать скрипты нового стиля /etc/init. Что-то вроде этого (например, поместите его в /etc/init/unison.conf):

start on (runlevel [06] or local-filesystems)
task
# If it needs to run other than root (you need Upstart 1.4, otherwise use "su" on exec line
setuid <username>

script
  # You can place your entire script here, no need for separate script
  exec unison -perms 0 -batch "/mnt/Data/Syncfolder/" "/home/myname/Syncfolder/"
end script
3
ответ дан 25 May 2018 в 13:48
  • 1
    Это выглядит круто, как я могу заставить этот скрипт выполняться на нескольких уровнях выполнения? – Exeleration-G 10 March 2012 в 01:42
  • 2
    start on (runlevel[06] ..." говорит, что он запускается на уровне запуска 0 и 6 (завершение работы и перезагрузка) или когда выбрано событие local-filesystems (запуск). В этом конкретном случае вам не нужно больше уровней запуска, но, как правило, просто используйте номера уровней запуска внутри []. – Tuminoid 11 March 2012 в 18:02
  • 3
    Хорошо, спасибо. При запуске у меня возникла неправильная ошибка строфы. Я прокомментировал часть setuid и заменил runlevel [06] or local-filesystems) на runlevel [016]. Ошибка исчезла, я скоро скажу вам, был ли сценарий выполнен как при запуске, так и при завершении работы. – Exeleration-G 11 March 2012 в 22:11
  • 4
    Если у вас нет события local-filesystems, вы можете использовать runlevel [0123456] для полной загрузки, если не знаете, что вы загружаете только однопользовательский (уровень запуска 1). – Tuminoid 12 March 2012 в 12:49
  • 5
    Да, теперь это работает. Сценарий запускается как при запуске, так и при завершении работы. Спасибо за вашу помощь – Exeleration-G 6 April 2012 в 18:28

проверить ваш скрипт ... если он работает, вы можете сделать свой crontab, как это

@reboot sh /usr/local/bin/s4lj.bash

таким образом, он будет работать при запуске

info: http: / /manpages.ubuntu.com/manpages/oneiric/en/man1/crontab.1.html http://www.softpanorama.org/Utilities/cron.shtml https://en.wikipedia.org/wiki/Crontab

0
ответ дан 25 May 2018 в 13:48
  • 1
    Спасибо, но это заставляет работать только при запуске. Я хочу, чтобы он запускался при выключении и перезагрузке. – Exeleration-G 3 March 2012 в 02:45

Старый способ (используя /etc/init.d и ссылки на него из /etc/rc?.d/[SK]*) обрабатывается /etc/init.d/rc. Внимательно прочитайте этот сценарий и узнайте, какой из его правил не позволяет вам быть выполненным. Возможно, я хочу это повторить.

Устраняет ли Upstart перехваты для заданий SysV? имеет хороший ответ Upstart.

0
ответ дан 25 May 2018 в 13:48

Я предлагаю вам забыть SysV, если это возможно, и использовать сценарии нового стиля /etc/init. Что-то вроде этого (например, поместите его в /etc/init/unison.conf):

start on (runlevel [06] or local-filesystems)
task
# If it needs to run other than root (you need Upstart 1.4, otherwise use "su" on exec line
setuid <username>

script
  # You can place your entire script here, no need for separate script
  exec unison -perms 0 -batch "/mnt/Data/Syncfolder/" "/home/myname/Syncfolder/"
end script
3
ответ дан 6 August 2018 в 02:01

Другие вопросы по тегам:

Похожие вопросы: