«Однострочный», разделенный на две строки для уменьшения прокрутки:
ps aux | awk -v cutoff=$(( $(date +%s) - 20 * 60 )) \
'/resque.*Forked [0-9]+ at [0-9]+/ { if ($NF < cutoff) system("kill " $2) }'
Его можно было бы сделать более жестким, используя спецификатор вывода для ps
, чтобы ограничить вывод только полями PID, COMM и ARG, а затем специально сопоставить COMM и ARGS, но риск ложноположительного совпадения кажется низким. мне, вот.
Вместо использования внешних инструментов, таких как sed
, cut
или awk
, вы можете просто использовать встроенную переменную оболочки расширение, которое вы уже использовали для удаления расширения:
echo -n ${title%% *}
Использование двойного %%
означает удаление самого длинного совпадения, поэтому вы удаляете все из переменной, начиная с первого пробела.
Вы всегда можете положиться на любой инструмент для обработки текста. Произнесите sed
, например:
$ sed -r 's/^([[:alpha:]]*).*/\1/' <<< "John 2015 Noun and verb structure.pdf"
John
Вот, пожалуйста,
title=$(echo $zBase|awk {'print $1'})
В awk $1 дает первое слово, $2 второе слово и так далее.
title=$(echo $title | cut -d" " -f1)
Добавьте это перед эхом. Он вырезает имя на каждом месте и занимает первую часть -> Что вы хотели сделать