Как сделать grep, который исключает набор каналов?

существует несколько подходов к этому. init сценарий, с помощью crontab и различные другие. Самый простой, по моему скромному мнению, должен использовать тэг @reboot в crontab пользователя, который должен работать , запускаются Афина, запускаются команда.

тэг @reboot выполняет команду точно однажды после ваших загрузок компьютера. Использовать crontab-e-u для помещения то, что следует в crontab пользователя по вашему выбору. То, что следует, - то, что необходимо поместить в crontab.

@reboot while [ "x`ps -ef|awk '$8 ~ /[:print:]*mysqld[:mysqld:]*/ { print $2 }'|wc -l`" == "x0" ]; do sleep 10 ; done && cd /your/directory && ./your_command

Это могла бы быть хорошая идея записать это в сценарий и место где-нибудь, вместо того, чтобы использовать ужасную остроту в вашем crontab. Идея позади все, что является: мы проверяем таблицу процессов каждые 10 секунд и если мы находим соответствие, т.е. существует процесс mysqld (или что-то тесно сходство его), мы выходим из цикла, изменяемся на каталог, где драгоценная команда, которая будет выполнена, является и затем выполняет команду в конце.

Другая опция состояла бы в том, чтобы записать init сценарий, который запускается после демона MySQL, но пример для этого потребовал бы содержания строки, начинающейся # chkconfig вашего MySQL init сценарий.

1
30.09.2014, 14:38
3 ответа

Как насчет

cat FILEONE.pp | grep "host = $(cat FILETWO.yaml | grep '[0-9]:' | grep -v ip)"
0
28.01.2020, 01:53

Я думаю, это может работать так, как вам нужно:

for host in $(awk '{print $3}' FILEONE.pp | sed "s/,//"); do grep -q $host FILETWO.yaml || echo $host; done

Это распечатывает список хостов только в первом файле если их нет во втором файле.

0
28.01.2020, 01:53

awk лучше всего подходит для этих вещей:

awk -F"[: ,]*" 'FNR==NR && /:$/ {a[$1]; next} $3 in a' f2 f1

просто петля через второй файл, хранящий имена хостов в массиве A [] . Затем, петлю через первую проверку файла, если 3-е поле находится в массиве.

Примечание -F »[:,] *« используется для установки полевого сепаратора как : , , или пробелы.

Тест

Учитывая эти образцы файлов:

$ cat f1
host = host1, ip = x.x.x.x
host = host2, ip = y.y.y.y
host = host3, ip = z.z.z.z
$ cat f2
host1:
ip: x.x.x.x
host3:
ip: x.x.x.x

См. Вывод:

$ awk -F"[: ,]*" 'FNR==NR && /:$/ {a[$1]; next} $3 in a' f2 f1
host = host1, ip = x.x.x.x
host = host3, ip = z.z.z.z
0
28.01.2020, 01:53

Теги

Похожие вопросы