в моем скрипте я пишу несколько функций awk для фильтрации того, что я хочу, по заданным ключевым словам.
Однако, когда я выполняю свой скрипт, я обнаружил, что есть несколько процессов, один из которых является родительским для другого, и все входные параметрыто же самое
Когда я использую pstree для PPID, я обнаружил следующее:
Итак, мой вопрос: будет ли awk в оболочке создавать подпроцесс?Это работает как форк или exec для создания подпроцесса?Если нет, то как объяснить PID и PPID следующим образом?
Кстати, скрипт, выполняющийся на другом компьютере, не будет генерировать подпроцесс, а pstree PPID только найдет следующее содержимое:
Имеет ли это какое-то отношение к ядру машины или что-то в этом роде?Вот некоторые части awk в моих сценариях:
в original_pids я хочу получить старый идентификатор процесса по заданным ключевым словам, таким как my_name, что-то полученное параметрами:
original_pids=$(ps -ef | grep ${my_name} | grep -v ${my_pid} | grep ${instance_id} | grep -F ${module_name} | grep -F ${module_path} | grep -F ${notice_log_paths} | grep -F ${wf_log_paths} | awk '{print $2}' | tr -d ' ')
и в duration_block - что получить содержимое файла в блоке, учитывая номера начала и середины строки файла, а $ {cur_last_file} - полученное имя файла
duration_block=$(awk 'BEGIN{ORS="\\n"} NR=='${begin}',NR=='${mid}' {print $0}' ${cur_last_file}| tr -d '\0')
Большое спасибо ~~~ :)
#!/bin/sh
headers="Content-Type: application/vnd.kafka.binary.v1+json"
file_name="./logs/data1.log"
file_size=$(sed -n "$=" ${file_name})
my_pid=$$
# kafka_proxy is fake here
kafka_proxy="http://aimer.cp01.com:8989/topics/fake_topic_name"
echo "my_pid=${my_pid}"
sleep 10
begin=1
block=900
while true ; do
mid=$[begin+block]
duration_block=$(awk 'BEGIN{ORS="\\n"} NR=='${begin}',NR=='${mid}' {print $0}' ${file_name})
duration_block=$(openssl enc -base64 <<< ${duration_block})
post_data='{"topic_name":"fake_topic_name","data":"'${duration_block}'"}'
post_data=$(openssl enc -base64 <<< ${post_data})
content='{"records":[{"value":'$(echo \"${post_data}\")'}]}'
#curl -X POST -H "${headers}" -d @- "${kafka_proxy}" <<< ${content}
#echo "block=${duration_block}"
begin=${mid}
done