2016-10-31 4 views
1

Это может быть очень простой вопрос, но если у меня есть идентификатор задания, как мне получить состояние работы, представленное через SGE? Я в основном хочу проверить идентификатор задания и посмотреть, находится ли он в состоянии ошибки, он все еще работает или завершен.Как получить состояние задания SGE

Я думал что-то вроде этого

qstat -u '*' | grep 123456 

Но если идентификатор задания является низким, она может вернуться, кроме того, что я хочу линии. И используя такую ​​команду ...

qstat -j '123456' 

... похоже, не возвращает рабочее состояние.

ответ

0

Я переехал в Torque/Maui, поэтому решение может быть неточным для GridEngine.

Для использования qstat и grep TRY слова на основе поиска:

qstat -u '*' | grep -w 123456 

Или используйте awk

qstat -u '*' | awk '$1 == 123456 { print }' 

Для Toque/Maui Я могу получить состояние работы с помощью qstat -f $jobid:

qstat -f 123456 | grep job_state 

Возможно, вы можете сделать аналогичные wi й вариант -j:

qstat -j $job_id | grep job_state 
+0

Опция -f, похоже, не работает. Он дает ошибку, что идентификатор jobID является недопустимым. Он отлично работает как qstat -j. Я использую SGE 8.1.8 –

+0

Действительно. Я изменил это, чтобы использовать опцию '-j'. – Vince

+0

Кажется, что для моей версии qstat она не возвращает значение 'job_state' при использовании опции' -j'. –

1

Выдайте команду:

qstat -xml 

Результаты будут в формате XML. Вы можете разобрать результат и извлечь состояние:

<job_list state="pending"> 
    <JB_job_number>3150728</JB_job_number> 
    <JAT_prio>0.00000</JAT_prio> 
    <JB_name>snpReference</JB_name> 
    <JB_owner>me</JB_owner> 
    <state>hqw</state> 
    <JB_submission_time>2016-11-23T11:54:01</JB_submission_time> 
    <queue_name></queue_name> 
    <jclass_name></jclass_name> 
    <slots>1</slots> 
</job_list> 
0

Просто сделать ваше регулярное выражение более конкретно:

qstat | grep "^123456\s" 

образом, вы будете только получить работу, вся работа номер один вы указываете.

Смежные вопросы