Найти - Пользователи
Полная версия: Автозапуск скрипта из Линукс.
Начало » Python для новичков » Автозапуск скрипта из Линукс.
1
nauman
Есть Ubuntu 10.4, есть Python 2.6, есть простой скрипт, который находится в домашней папке:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import os, shutil, fnmatch, time

path=os.path.expanduser("~")+'/Загрузки'
dest_path='/mnt/Torrents/'
while 1:
for _file in os.listdir(path):
if fnmatch.fnmatch(os.path.join(path, _file), '*.torrent'):
if not _file in os.listdir(dest_path):
shutil.move(os.path.join(path, _file), dest_path)
else: os.remove(os.path.join(path, _file))
time.sleep(20)
Скрипт исполняемый, т.е запускается из консоли без проблем. Помещаю ссылку на него в /etc/rc.local, но при перезагрузке системы он ни в какую не запускается, в то время, как другие питоновские скрипты работают оттуда же без проблем. Я пробовал перемещать файл в /usr/bin., автозапуска не происходит.
Тотже эффект если, поместить ссылку на скрипт в “ Система-Параметры-Запускаемые приложения”, автостарта нет. В последнем варианте syslog пишет:
Aug 12 21:33:47 comp gnome-session[1518]: WARNING: Could not launch application 'torr_find.py.desktop': Unable to start application: Произошёл сбой при выполнении процесса-потомка "/usr/bin/torr_find.py" (Отказано в доступе)
Мне это не понятно, пробовал менять права на файл, нет автозапуска не из под root, не из под usera, менял расширение файла с py на pyw, желаемого результата не дало.
P.S dest_path='/mnt/Torrents/' находится на ntfs разделе, монтируется при старте перед запуском этого скрипта.
guranvir
А если через cron попробовать
nauman
Через крон, тоже не запускается, в принципе крон это не то что хотелось бы, он должен работать при загрузке системы.
Ed
По виду все дело в том, от какого юзера скрипт запускается. Из rc.local он будет запускаться из-под рута, что приводит к проблемам при доступе к os.path.expanduser(“~”)+'/Загрузки'. У вас есть каталог /root/Загрузки ?
nauman
Ed
По виду все дело в том, от какого юзера скрипт запускается. Из rc.local он будет запускаться из-под рута, что приводит к проблемам при доступе к os.path.expanduser(“~”)+'/Загрузки'. У вас есть каталог /root/Загрузки ?
Не запускается из под любого пользователя, точнее сказать я по очереди менял владельца файла, в то время, как другие скрипты работают от имени простого юзера.
/root/Загрузки, вроде нет, смогу уточнить только завтра.
Alex2ndr
nauman
Не запускается из под любого пользователя, точнее сказать я по очереди менял владельца файла, в то время, как другие скрипты работают от имени простого юзера.
Пользователь от которого запускается определяется не владельцем файла, а uid того процесса, который его запускает. В случае, если ваш скрипт стартует из rc.local, то это root. Если с автозагрузкой DE, то это тот пользователь от которого запускаете DE.

Вообщем вот:
1. Поменяйте
path=os.path.expanduser(“~”)+'/Загрузки'
на
path = ‘/home/nauman/Загрузки’
2. Скопируйте скрипт в /etc/init.d/
3. Проверьте, имеет ли он бит исполнения. Должен иметь.
3. Добавьте его в автозагрузку вот так -
update-rc.d torr_find.py start 99 2 3 4 5 . stop 1 0 1 6 .
Если что непонятно читайте man update-rc.d
nauman
Спасибо, манипуляции с /etc/init.d/ принесли желаемый результат.
Alex2ndr
nauman
манипуляции с /etc/init.d/
Это не “манипуляции”. Это православный способ добавления в автозагрузку в основанных на Debian дистрибутивах. Он описан в Debian Policy Manual - http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB