Сохраните pid запущенного процесса и сохраните его в файл. Перед созданием нового экземпляра убедитесь, что старый закончился. В противном случае убейте его.
echo "Starting a new A instance"
nohup /tmp/a.sh &
echo "Writing A pid to file"
echo $! > /tmp/a_pid
Затем вы можете проверить время и убить скрипт следующим образом:
if [ -f /tmp/a_pid ]; then
echo "Trying to stop previous instance of proces A"
kill $(cat /tmp/a_pid) || true
echo "Removing A pid file"
rm /tmp/a_pid
fi
grep -E '(^[[:alpha:]]{5}[^[:alpha:]]|[^[:alpha:]][[:alpha:]]{5}$)' /usr/share/vim/vim74/tutor/tutor
grep -E
использует egrep
'(a | b)'
ищет шаблон a
или шаблон b
^
- начало строки, $
- конец строки
[ [: alpha:]] {5}
означает 5 последовательных букв
[^ [: alpha:]]
означает не-а -letter
Итак, мы используем egrep для поиска:
Это немного зависит от того, что вы подразумеваете под словом , но что-то вроде
grep -E '^[[:alnum:]]{5}\b'
(пять буквенно-цифровых символов, за которыми следует граница слова, привязанная к началу строка) или, если ваша версия grep поддерживает Perl-совместимые регулярные выражения (PCRE)
grep -P '^\w{5}\b'
(пять символов слова , за которыми следует граница слова, привязанная к началу строки). Для конца строки эквивалентами будут что-то вроде
grep -E '\b[[:alnum:]]{5}$' file
или
grep -P '\b\w{5}$'
. Обратите внимание, что для конкретного файла, который вы упоминаете, большинство строк начинаются с ведущего пробела: если вы хотите игнорировать это, вам потребуется сделать что-то вроде grep -E '^ [[: space:]] * [[: alnum:]] {5} \ b'
или его эквивалент PCRE grep -P '^ \ s * \ w {5} \ b '
.