Во-первых, Ваш сценарий будет воздействовать на один файл (последнее в списке). Кроме того, я не думаю, что один лайнер является всегда соответствующим или изящным. Крон делает много негласно, и необходимо смочь рассмотреть вещи тот сбой. Рабочий крон "часто" может быть проблемой. Можно закончить с десятками этих процессов выполнение, замедлив системы, поскольку они все пытаются обработать файлы в своей очереди.
Это - то, что я сделал бы.
Dir="$HOME/input_files" # never hardcode when you have variables
for filename in "$Dir"/*.xml; do
# is the file non-empty AND is it still there, or may caught by another
# process
if [ -s "$filename" ]; then
# move files locally will be faster than crossing filesystems to /tmp
mkdir -p "$Dir/.processing"
# temp name should use pid, just in case another input with the same name comes in
tempname="$Dir/.processing/`basename $filename .xml`.$$"
mv "$filename" "$tempname"
# send stdout and stderr to a .output file
myscript.sh "$tempname" other_inputs > "$tempname.output" 2>&1
rc=$?
if [ $rc -eq 0 ]; then
rm "$tempname" "$tempname.output"
else
echo "Error processing $filename; rc=$rc" >&2
echo "File in $tempname" >&2
fi
done
Это или удалит файл после того, как обработка, или на ошибке удержит файл .processing
каталог включая вывод команды. Команда выше ничего не регулирует, но она действительно позволяет, чтобы больше чем один работал, не вмешиваясь друг в друга. Существуют другие вопросы о том, как создать довольно эффективные очереди заданий для увеличения.
Принятие Вы используете что-то как Gnome, Xfce или некоторая совместимая настольная среда; хорошая альтернатива должна создать a .desktop
файл. Например, unix_stackexchange_com.desktop
со следующим содержанием:
[Desktop Entry]
Version=1.0
Name=Unix & Linux
Comment=Link to Unix & Linux.
Exec=google-chrome http://unix.stackexchange.com
Terminal=false
Icon=/path/to/icon
Type=Application
Теперь Вы просто делаете это исполняемым файлом как это
chmod +x unix_stackexchange_com.desktop
Вместо google-chrome
можно использовать любимый браузер как firefox
и т.п. Или используйте более универсальный подход как xdg-open
, если это установлено и настроено. Также можно заменить /path/to/icon
поскольку универсальный значок называет как text-html
использовать значок, используемый для файлов HTML в Вашем файловом менеджере или указать на изображение где-нибудь в Вашем диске. В моем случае я загрузил и одолжил значок этого сайта.