Если Вы находитесь на debian, базирующемся Linux как Ubuntu, можно использовать consolechars
от consoletools пакета. Что-то как
$ consolechars -f Arabic-Fixed15.psf.gz
Также существует http://sourceforge.net/projects/nafe/ NAFE для редактирования шрифтов консоли.
setfont
не работал на меня тогда (я говорю 2008).
Проблема, Вы используете в для чего-то, который, как не предполагают, использовался для, действительно. У Вас также есть две конфликтующих цели: "выполненная программа 2 после программы 1" и "выполненной программы 2 в 17:00 12 января".
Одна часть Вашей проблемы проста решить: в позволяет несколько команд. Так, вместо просто использования at
запланировать sas
сценарий, можно поместить rm
в задании также.
at 5:00 PM JAN 11 <<EOJ
sas program1.sas
rm file1.sas7bdat file2.sas7bdat file3.sas7bdat file4.sas7bdat file5.sas7bdat
EOJ
Нет никакой причины &
в sas
строка; at
всегда задания выполнений "в фоновом режиме".
Затем, необходимо изобразить, как Вы хотите решить конфликт, упомянутый ранее. В частности, если задание 11 января не закончилось 24 часа спустя (к 17:00 12 января). Существует несколько способов пойти об этом:
rm
.sleepenh
, при наличии, чтобы не делать вычисление самостоятельно).Таким образом, то, что Вы имеете и хотите сделать в основном, сводится к следующему.
command1 &
wait <on command1>
sleep <until specified time>
command2 &
wait <on command2>
sleep <until specified time>
...
В этом случае, удаляя фоновую обработку (&
) а также wait
и sleep
заставит команды выполняться в последовательности. Это, однако, заставит их сразу выполниться друг после друга.
Для ожидания до определенного времени Вы можете sleep
для соответствующего количества времени. sleep
занимает много секунд в качестве входа, и системы Unix традиционно сохраняют и измеряют время в секундах, таким образом, это сводится к простой арифметике:
Как сделать, который приятно размечается в этом ответе Переполнения стека, но скопировать основную часть:
current_epoch=$(date +%s)
target_epoch=$(date -d '01/01/2010 12:00' +%s)
sleep_seconds=$(( $target_epoch - $current_epoch ))
sleep $sleep_seconds
Тем конкретным примером является синтаксис удара, но должно быть довольно легко преобразовать в примерно любой язык сценариев оболочки. $(...)
выполняет команду и замены выводом той команды, и $(( ... ))
оценивает арифметическое выражение.
GNU date -d
также поддерживает метки времени только для времени, таким образом, можно сказать date -d '05:00'
и это переведет это в ближайшее 5:00.
Соединяя это, должно быть легко сделать сценарий как тот, который Вы хотите.
Ну, существует нет wait
команда. По крайней мере, не, что я знаю о. Вот моя альтернативная логика:
Создайте 3 файла сценария для каждой программы SAS. Эти сценарии только выполнятся, если предыдущая программа SAS закончила выполнение. Это может быть сделано путем получения pid
из предыдущей программы SAS и проверяющий с ps
управляйте, чтобы это не работало больше прежде, чем удалить выходные файлы.
Запланируйте сценарии с crontab
работаться каждый с пятницы по воскресенье, соответственно.
Так, если я назвал первый файл сценария sas_script1.sh
, это было бы похоже на это:
if [ -f /var/run/sas.pid ]; then
/bin/ps $( cat /var/run/sas.pid ) >/dev/null
[ $? ] && exit # $? checks the exit status of the last command
fi
rm -f /path/to/file{1..5}.sas7bdat
/usr/bin/sas /path/to/program1.sas &
echo $! >/var/run/sas.pid # $! gives you the PID of the last program that's sent background
Запишите тот же сценарий для отдыха двух программ SAS, например, просто отредактируйте program1.sas
кому: program2.sas
Создайте a file
и запишите следующее в нем:
00 17 * * 5 /path/to/sas_script1.sh
00 17 * * 6 /path/to/sas_script2.sh
00 17 * * 0 /path/to/sas_script3.sh
Теперь, загрузите файл как задание крона:
crontab /path/to/file
Можно узнать больше о Un*X этот путь :D
wait
команда." man wait
говорит иначе. ожидайте, waitpid, ожидал - ожидают процесса для изменения состояния.
– a CVn
10.01.2013, 23:11
help wait
покажет справку для встроенного удара. Вы смотрите на системный вызов ядра wait()
, не оболочка wait
команда.
– jordanm
10.01.2013, 23:17
[ $? ]
- это ничего не делает, так как это всегда верно, даже на плохом коде возврата. Это также использует функции неPOSIX, не указывая, в каких оболочках это будет работать.
– jordanm
10.01.2013, 23:33