Вот вкладыш awk 1, который вам понадобится для вашего случая использования:
ps -o etime -C ProgramName | awk -v MAX=600 '{split($0, a, ":"); if (length(a)==2) sec=a[1]*60+a[2]; else if (length(a)==3) sec=a[1]*3600+a[2]*60+a[3]; if (sec>MAX) print "Elapsed"; else print "Not Elapsed"}'
Также обратите внимание, что ps -o etime -C ProgramName
дает вам время с момента запуска ProgramName, поэтому вам не нужно использоватьВаша слишком сложная команда для получения этого времени.
ВАЖНО: Также помните, что для процессов, которые выполнялись более суток, вы получите вывод команды ps
в виде чего-то вроде1-21:48:48
.У меня нет этого случая в моей команде awk, но вы можете использовать ту же команду awk's split
, как я показал выше.
ОБНОВЛЕНИЕ: Согласно комментарию ниже, используйте этоверсия для FreeBSD или любого другого варианта Unix (например, Mac), где опция -C ProgramName
недоступна.
ps -o etime=,command= | awk -v MAX=600 '/ProgramName/ && !/awk/ {split($1, a, ":"); if (length(a)==2) sec=a[1]*60+a[2]; else if (length(a)==3) sec=a[1]*3600+a[2]*60+a[3]; if (sec>MAX) print "Elapsed"; else print "Not Elapsed"}'