FILE-MOVE блокирует файлы

Обсуждение программ nnCron и nnCron LITE

FILE-MOVE блокирует файлы

Postby WAndrey » Wed, 29 Feb 2012, 15:59

v 1.91 Build 1083
v 1.93b10 Build 1141

Выполняю FILE-MOVE. Источник локальный, приемник - сетевая шара, оба Windows Server 2003 rus R2 SP2 + все хотфиксы. Если в процессе переноса происходит ошибка и операция завершается неудачно, то блокируются оба файла, как источник, так и приемник - файл невозможно удалить ни из задачи крона, ни из проводника/far и т.д. Помогает только рестарт сервиса крона. Подскажите как ситуацию исправить?
WAndrey
 
Posts: 44
Joined: Fri, 20 May 2011, 10:57

Re: FILE-MOVE блокирует файлы

Postby Morituruz » Wed, 29 Feb 2012, 16:10

Если вместо FILE-MOVE делать FILE-COPY и FILE-DELETE?
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: FILE-MOVE блокирует файлы

Postby WAndrey » Wed, 29 Feb 2012, 17:20

Попробую конечно, но если есть одна команда, не хотелось бы использовать две :(
WAndrey
 
Posts: 44
Joined: Fri, 20 May 2011, 10:57

Re: FILE-MOVE блокирует файлы

Postby Morituruz » Wed, 29 Feb 2012, 20:08

Попробуйте конечно, но если есть ошибка, то надо разбираться с её причиной, а не следствиями.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: FILE-MOVE блокирует файлы

Postby WAndrey » Wed, 29 Feb 2012, 22:02

Конечно попробовал. Блокирует так же.
Нашел еще одну ситуацию. Файлы немаленькие, копирование может идти часами. Если во время копирования изменить кронтаб, просто открыть в редакторе и сохранить - прекращает копирование/перенос и блокирует файлы до рестарта сервиса крона :(
WAndrey
 
Posts: 44
Joined: Fri, 20 May 2011, 10:57

Re: FILE-MOVE блокирует файлы

Postby VoidVolker » Thu, 01 Mar 2012, 16:59

Все правильно - поток, который копировал файлы завершается, а винда не додумается разблокировать файлы. В этом случае задачу следует запускать отдельным внешним скриптом либо использовать для этого внешнюю программу - например wput или nnbackup.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: FILE-MOVE блокирует файлы

Postby Morituruz » Fri, 02 Mar 2012, 08:26

В ветке вопросы-ответы мне господа программисты подсказали, как запустить слово как задачу. Как оказалось, такое слово запускается в каком-то суперотдельном потоке, которого перечитывание кронтаба не касается.
Вот как-то так:
Code: Select all
:<%
:NONAME
5 0 DO
   MSG: "шмяк"
LOOP
; TASK: snarf!
%>


#( snarf_start
NoLog
NoActive
Action:
snarf! START
)#


т.е. вы можете запихнуть вашу задачу в слово, и из задачи стартовать это слово, тогда перечитывания кронтаба перемещению файлов не помешают.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: FILE-MOVE блокирует файлы

Postby WAndrey » Fri, 02 Mar 2012, 17:39

За слово спасибо, попробую. Но это только касательно перечитывания кронтаба. А что делать с ошибкой файловой операции? Блокировка и в слове останется :(
WAndrey
 
Posts: 44
Joined: Fri, 20 May 2011, 10:57

Re: FILE-MOVE блокирует файлы

Postby VoidVolker » Fri, 02 Mar 2012, 20:10

Эээ, нет. Нет никаких "супер отдельных потоков". Есть основной процесс крона, внутри процесса может быть много различных параллельных/независимых потоков. Каждая задача запускается таким вот потоком. При перечитывании кронтаба ннкрон убивает все свои потоки, независимо от того, каким образом они были запущены - задачей из кронтаба или другой задачей. Это почти то же самое, что и перезапуск крона. Это связано с тем, что при перечитывании кронтаба скомпилированный код кронтабов компилируется заново, поэтому поток созданный в кронтабе/задаче из кронтаба - не сможет работать. Он как бы "остается за бортом". Поэтому и следует использовать приложение для копирования или отдельный внешний скрипт, который запустит еще один процесс крона, отработает и закроется.
А блокировка потому и происходит, что перестает существовать поток, открывший файл.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: FILE-MOVE блокирует файлы

Postby Morituruz » Fri, 02 Mar 2012, 20:33

Я просто констатировал факт, что запущенное таким образом слово-задача не прекращает работу при изменении кронтаба. Демонстрационный пример приложил.
Не нравится термин "суперотдельный поток" — предложите свой вариант :D
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: FILE-MOVE блокирует файлы

Postby WAndrey » Fri, 02 Mar 2012, 21:53

Мы уходим в сторону от первоначальной проблемы, перечитывание кронтаба не такая частая операция. А вот что делать с тем, что при ошибке копирования/перемещения файлы блокируются намертво до перезапуска службы крона?
А как пожелание - хранить рядом со скомпилированной задачей хэш ее текста в кронтабе и убивать/перекомпилировать только при изменении текста?
WAndrey
 
Posts: 44
Joined: Fri, 20 May 2011, 10:57

Re: FILE-MOVE блокирует файлы

Postby VoidVolker » Fri, 02 Mar 2012, 22:01

Разблокировать конечно - любым консольным разблокиратором. Либо использовать внешнее приложение, способное обрабатывать ошибки при передаче.
Нет смысла. Проще запустить внешним скриптом.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: FILE-MOVE блокирует файлы

Postby WAndrey » Fri, 02 Mar 2012, 22:13

Разблокировать не вариант, надо обрабатывать ошибки тут же в скрипте, да и я навскидку не помню ни одного, способного разблокировать файл на удаленной системе. FILE-MOVE ошибку возвращает, а сделать с файлом я уже ничего не могу :(
С внешним приложением/скриптом понятно, но имея команды крона привлекать что-то еще - некрасиво :(
WAndrey
 
Posts: 44
Joined: Fri, 20 May 2011, 10:57

Re: FILE-MOVE блокирует файлы

Postby VoidVolker » Fri, 02 Mar 2012, 23:28

После перечитывания кронтаба и смерти самой задачи - уже ничего не сделаешь. Надо устранять причину, а не следствие. Так из-за чего ошибки-то? Из-за перечитывания кронтаба и смерти самой задачи? Так в чем проблема запуска задачи отдельным приложением, которое не закроется после перезапуска крона? А если коннект нестабильный, то не лучше ли использовать специализированное приложение, в котором реализован требуемый функционал к качеству передачи файлов? Крон вроде не накладывает никаких ограничений на запуск приложений с параметрами командной строки.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: FILE-MOVE блокирует файлы

Postby ANR Daemon » Sat, 03 Mar 2012, 16:06

Поставьте задачу нормально.
"Хочу копировать файлы" за постановку задачи не прокатит.
С какой целью копируете? Рассматривались ли альтернативные варианты решения задачи?
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 6 guests