Постоянный автоматический запуск

Я хотел бы сделать сценарий Python 3.4, который запускается с моего компьютера так, чтобы он был постоянно проверен для запуска с компьютером (редактирование: постоянно проверенный означает, что это не может быть отключено через xfce4-session-settings). (Редактирование: Это должно влиять на всех пользователей, даже будущие, но если Вы ответили, прежде чем я сказал это, я не включу это в к тому, принимаю ли я его.) Сценарий не должен заканчиваться, особенно. Я не хочу, чтобы непривилегированные пользователи смогли снять флажок с ним. Как я пошел бы о выполнении этого?

В настоящее время они не могут удалить или отредактировать (или даже посмотреть детали), запись (к счастью), потому что это сделано для всех пользователей (даже будущие). Однако они могут снять флажок с ним очень хорошо, это кажется.

(Я включил его для набора для всех пользователей путем добавления a myScript.desktop файл к /etc/xdg/autostart и дал ему следующий текст:

[Desktop Entry]
Type=Application
Name=NameOfMyScript
Exec=MyScript
Icon=system-run
X-GNOME-Autostart-enabled=True

)

Сценарий позволяет моему IP-адресу для основанного на DNS веб-фильтра быть обновленным. Это периодически проверяет на потерянное соединение в случае, если маршрутизатор был сброшен и измененный IP-адрес.

Я нахожусь на Xubuntu 14.04, 64-разрядном.

1
задан 2 September 2014 в 03:12

3 ответа

Отредактированный...

я думаю, что Вы ищете 'init сценарий' решение. Здесь существует простой пример: https://unix.stackexchange.com/questions/6697/run-python-script-on-startup и другой здесь: http://mobiarch.wordpress.com/2014/05/16/creating-an-init-script-in-ubuntu-14-04/

Кратко: Вы помещаете свой сценарий в, например, /usr/local/bin/my_script.py (это не необходимо, можно работать, это даже от домашнего dir)

не забывайте:

sudo chmod +x /usr/local/bin/my_script.py

Затем, в /etc/init.d Вы создаете файл, например, my_script со следующим содержанием:

#!/bin/sh
# /etc/init.d/my_script
# Description: Starts Python script my_script
# ————————————————–
#
### BEGIN INIT INFO
# Provides: my_script
# Required-Start: $network $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start Python script my_script
### END INIT INFO

case $1 in
  start)
    echo -n "Starting my_script: "
    /usr/bin/python /usr/local/bin/my_script.py &
    ;;
  *)
    echo "Usage: my_script start"
    exit 1
esac

, Так как Вы хотите, чтобы этот сценарий запустился на запуске, выполняет эту команду:

sudo update-rc.d my_script defaults

я не уверен, понимаю ли я Вашу мысль с, "Мне нужна она для запуска сценария после того, как Python 3.4 становится доступным, поскольку это - сценарий Python";. попробуйте этот путь и сообщите мне, запускается ли он или нет.

Отредактированный снова... Так или иначе я думал об этом... Если Ваш сценарий Python не может быть запущен до некоторого недостоверного события, возможно, можно просто создать простой сценарий удара... что-то как этот:

#!/bin/bash

STARTED=0
while [ $STARTED == 0 ]
do
    ./myscript.py && STARTED=1
    sleep 1
done
0
ответ дан 7 October 2019 в 04:29

Другое решение, которое я использовал, основано Upstart, довольно мощный материал. Возможно, Вам не нужен он вообще. http://upstart.ubuntu.com/cookbook/

Позволяет нам создать файл в Вашем домашнем /home/your_user_name/scripts/my_script.conf с этим содержанием:

# my_script.conf

description "here goes the description for my_script"
author "Peter Farkas @ InDaLine"

# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn

# Essentially lets upstart know the process will detach itself to the background
expect fork


# Run before process
pre-start script
   setuid pep
   chdir /home/your_user_name/scripts
end script

# Start the process
exec /usr/bin/python /home/your_user_name/scripts/my_script.py & 

# Run after process start
post-start script
    echo "my_script.py started"
end script

Мы должны сделать его исполняемым файлом:

sudo chomd +x /home/your_user_name/scripts/my_script.conf

После той ссылки этот .conf файл в /etc/init каталог:

sudo ln -s /home/your_user_name/scripts/my_script.conf /etc/init/my_script.conf

, Как я могу помнить после этих шагов мой сценарий, запущенный после каждой перезагрузки и перезапущенный, если некоторая ошибка произошла. Поскольку я думаю, что Вы не можете хотеть, чтобы Ваш сценарий работал навсегда, таким образом, Вам не нужно respawn часть в этом файле, но возможно это точно, в чем Вы нуждаетесь так, я просто уехал там. (Мой сценарий предназначается для выполнения навсегда и если он останавливается так или иначе, он должен быть сразу перезапущен).

я все еще не уверен в Вашем предложении, "Мне нужно оно для запуска сценария после того, как Python 3.4 становится доступным, поскольку это - сценарий Python"; но Выскочку называют собой "событием, базирующимся", таким образом, Вам, возможно, понадобится это для точной настройки стартовые условия...

0
ответ дан 7 October 2019 в 04:29

Ну, я нашел сумасшедшее обходное решение. Так, я думал, что совместно использую. Я не ожидаю, что он будет принятым ответом, однако (но это работает). Это может или не может быть опасно.

, Который должен скопировать xfc4-session-settings с/usr/bin в папку мусорного ведра всех пользователей, что я на самом деле хочу быть в состоянии использовать его (например,/home/sally/bin). Затем удалите его из/usr/bin. Затем изменение permissionson домашние каталоги bin так, чтобы неавторизованные пользователи не могли получить доступ к ним. Так, все будущие пользователи не видят что автоматические запуски. Недостаток, они не видят ни одного из него (хотя хорошо, что они не видят сценарий). Сохраните копию для откладывания его при когда-нибудь реальной необходимости в нем там. Перезагрузка (если папки мусорного ведра уже не были там).

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

0
ответ дан 7 October 2019 в 04:29

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

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