Я хотел бы сделать сценарий 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-разрядном.
Отредактированный...
я думаю, что Вы ищете '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
Другое решение, которое я использовал, основано 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"; но Выскочку называют собой "событием, базирующимся", таким образом, Вам, возможно, понадобится это для точной настройки стартовые условия...
Ну, я нашел сумасшедшее обходное решение. Так, я думал, что совместно использую. Я не ожидаю, что он будет принятым ответом, однако (но это работает). Это может или не может быть опасно.
, Который должен скопировать xfc4-session-settings с/usr/bin в папку мусорного ведра всех пользователей, что я на самом деле хочу быть в состоянии использовать его (например,/home/sally/bin). Затем удалите его из/usr/bin. Затем изменение permissionson домашние каталоги bin так, чтобы неавторизованные пользователи не могли получить доступ к ним. Так, все будущие пользователи не видят что автоматические запуски. Недостаток, они не видят ни одного из него (хотя хорошо, что они не видят сценарий). Сохраните копию для откладывания его при когда-нибудь реальной необходимости в нем там. Перезагрузка (если папки мусорного ведра уже не были там).
я пытался просто изменить полномочия на нем, прежде чем я пытался удалить его, но этому все еще удалось открыться для пользователей, которые не должны были иметь доступа к нему.