Keypass имеет встроенный генератор паролей. Создайте новый пароль и запомните его одним и тем же инструментом.
Моя проблема с grep заключается в том, что это синтаксический анализатор целых строк. В вашем примере вы ищете «abc», но он возвращает экземпляр grep (который ищет «abc»). Немного круговое. Вы можете отфильтровать это, но я нахожу все, что немного извращено.
Я немного обратился к awk.
ps aux | awk '$12=="abc.sh"'
awk разбивает строки на поля на основе пробелов (по умолчанию). Поля $ 11 + являются столбцами команд, поэтому если команда «sh abc.sh ...», $11 будет sh, а $12 будет abc.sh.
Если вы хотите контролировать вывод или цепочку с помощью операторов && и || Bash, вы можете, но вам нужно быть немного умнее. grep выйдет со статусом 1 (технический сбой, триггеры ||), если ничего не найдено, но awk всегда выйдет из кода 0. Мы можем изменить это, сказав ему выйти, если он что-то найдет, и выбросить 1, если это не:
ps aux | awk '$12=="abc.sh" {exit 0} END{exit 1}' && echo running || echo not running
Конечно, если вы просто заботитесь о записи вывода на экран, вы можете сделать это все в awk:
ps aux | awk '$12=="abc.sh" {print "running"; exit} END{print "not running"}'
Если ваш скрипт в настоящий момент запущен, он должен быть показан командой ps aux.
Вывод ps, как это означает, что ваш скрипт в настоящий момент не запущен,
$ ps aux | grep hm.sh
avinash 6386 0.0 0.0 15940 932 pts/16 S+ 17:34 0:00 grep --color=auto hm.sh
Если это так, то это означает, что ваш скрипт в настоящий момент запущен.
$ ps aux | grep hm.sh
avinash 6454 0.0 0.0 16616 1384 pts/16 S+ 17:35 0:00 /bin/bash ./hm.sh
avinash 6535 0.0 0.0 15940 932 pts/27 R+ 17:35 0:00 grep --color=auto hm.sh
Все это основано на содержимом скрипта.
Например, если вы создаете сценарий вроде этого. Он отображает сообщение HI при выполнении.
#!/bin/bash
echo "HI"
Но если ваш скрипт похож на этот,
#!/bin/bash
sudo apt-get update
Требуется несколько минут, чтобы отобразить вывод и завершился после его окончательного результата. чтобы завершить процесс. Тем временем, если вы запустите команду ps aux | grep filename, она будет показана на выходе. Поскольку скрипт в настоящее время запущен.
Правильный способ проверить текущий сеанс bash, если процесс, запущенный в фоновом режиме, например sh abc.sh &, уже запущен или нет, заключается в использовании встроенной команды jobs.
Пример:
$ sh abc.sh &
[1] 6917
$ jobs
[1]+ Running sh abc.sh &
Это означает, что процесс sh abc.sh запущен в фоновом режиме. Если процесс завершен, вы увидите что-то вроде:
[1]+ Done sh abc.sh
Если у вас больше процессов, работающих в фоновом режиме, вы можете ограничить вывод только процессом sh abc.sh, используя:
См. help jobs для получения дополнительной информации.
Вышеуказанный метод будет работать только в текущем сеансе bash. Но если вы находитесь в другом сеансе bash (например, в другом окне терминала или вкладке или в скрипте), кроме:
ps aux | grep "[s]h bin/test.sh"
вы также можете использовать:
pgrep -a sh
[d7 ], который кажется мне более простым. Если вы увидите введенную команду на выходе (sh abc.sh в этом случае), это означает, что процесс все еще запущен. Если нет, процесс завершен. , если вы просто хотите проверить, есть ли какой-либо процесс, перейдите в этот каталог и введите ll -tr, если вы видите .csv или .work и т. д. в конце файла, а это значит, что в процессе иначе нет.