Если у вас есть Windows, по крайней мере, с административным ресурсом \\computer\c$
и у вас есть Linux, который запустит скрипт:
Смонтировать общую папку Windows для чтения/записи
mount -t cifs $network_path $mount_directory -o credentials=$cred_file
Выполнить команду перемещения в смонтированном каталоге
mv "$mount_directory/*" "$new_directory"
Возможно, потребуется скопировать, а затем удалить файлы...
cp "$mount_directory/*"
rm "$mount_directory/*"
Проверьте переключатели, которые могут потребоваться для команд (cp
, mv
и rm
).
Как мне удалось понять из ОП:
my_script.py
, но вы не можете предсказать завершение или время выхода. my_script.py
выполняется и записывает в лог-файл (вызывайте его file.log
до тех пор, пока он не остановится. my_script.py
Это можно сделать разными способами. Один из них заключается в том, чтобы полагаться на inotify
из пакета inotify-tools
для мониторинга событий файловой системы по линии совершенно хороших ответов здесь и (, еще лучше)там .
В качестве альтернативы вышеизложенному можно вручную определить дату последней модификации файла журнала и проверить, продолжает ли отображаться pid вашего процесса. Поместите всю логику в короткий исполняемый bash-скрипт, например:
#!/bin/bash
/usr/bin/python my_script.py >> file.log & # launch process in background
my_proc_pid="$!" # save process pid for last executed command
prevtime=0 # initialize "previous modification time" variable
while : ; do
sleep 1 # check log file modification time every 1s
# modification time in milliseconds
if (( $(\find /path/to/file.log/ -name file.log -printf "%T") - prevtime > 30000)); then
#if (( "$(\ls -l --time-style=+%s /path/to/logfile/file.log | cut -d' ' -f6)" - prevtime > 30)); then
prevtime="$(\find /path/to/file.log/ -name file.log -printf \"%T\")"
#prevtime="$(\ls -l --time-style=+%s /path/to/logfile/file.log | cut -d' ' -f6)"
if (\ps | grep -v grep | grep "$my_proc_pid" &>/dev/null) ; then
# kill process in background, '&>' same as '>/dev/null 2>&1'
/usr/bin/kill -9 "$my_proc_pid" &>/dev/null
fi
# launch process and save its pid
/usr/bin/python my_script.py >> file.log &
my_proc_pid="$!"
fi
done
# use CTRL-C to stop loop execution and to exit script
Примечание:Я включил два способа поиска времени модификации вашего файла журнала. Тот, который не закомментирован, включает find
, который обрабатывает странные имена файлов (, например. с пробелами и т. д. )лучше, чем ls
, и не зависит ни от какой трубы. Однако в этом случае вы должны предоставить полный ПУТЬ к вашему файлу журнала(/path/to/logfile/
)в качестве первого аргумента cmd find
. В случае ls
вам необходимо указать тот же путь вместе с полным именем файла журнала, что и в:/path/to/logfile/file.log
Я частично проверил это на bash
v5.0.1. Сообщите о проблемах, если таковые имеются.ХТХ