Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2010 14:55:45

nauman
От:
Зарегистрирован: 2009-10-28
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

Есть 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 разделе, монтируется при старте перед запуском этого скрипта.



Отредактировано (Авг. 13, 2010 15:05:02)

Офлайн

#2 Авг. 13, 2010 15:05:08

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

А если через cron попробовать



Офлайн

#3 Авг. 13, 2010 15:34:55

nauman
От:
Зарегистрирован: 2009-10-28
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

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



Офлайн

#4 Авг. 13, 2010 21:31:58

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

По виду все дело в том, от какого юзера скрипт запускается. Из rc.local он будет запускаться из-под рута, что приводит к проблемам при доступе к os.path.expanduser(“~”)+'/Загрузки'. У вас есть каталог /root/Загрузки ?



Офлайн

#5 Авг. 13, 2010 22:05:18

nauman
От:
Зарегистрирован: 2009-10-28
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

Ed
По виду все дело в том, от какого юзера скрипт запускается. Из rc.local он будет запускаться из-под рута, что приводит к проблемам при доступе к os.path.expanduser(“~”)+'/Загрузки'. У вас есть каталог /root/Загрузки ?
Не запускается из под любого пользователя, точнее сказать я по очереди менял владельца файла, в то время, как другие скрипты работают от имени простого юзера.
/root/Загрузки, вроде нет, смогу уточнить только завтра.



Отредактировано (Авг. 13, 2010 22:10:23)

Офлайн

#6 Авг. 13, 2010 22:29:09

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

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



Офлайн

#7 Авг. 14, 2010 13:29:10

nauman
От:
Зарегистрирован: 2009-10-28
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

Спасибо, манипуляции с /etc/init.d/ принесли желаемый результат.



Офлайн

#8 Авг. 14, 2010 22:25:10

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

Автозапуск скрипта из Линукс.

nauman
манипуляции с /etc/init.d/
Это не “манипуляции”. Это православный способ добавления в автозагрузку в основанных на Debian дистрибутивах. Он описан в Debian Policy Manual - http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version