활성화된 crontab 항목 위에 행을 얻는 방법

활성화된 crontab 항목 위에 행을 얻는 방법

다음 crontab 항목이 있습니다

$ crontab -l
#Cron to auto restart app1
#Ansible: test1
#*/15 * * * * ansible-playbook  /web/playbooks/automation/va_action.yml


#Cron to auto restart app7

#Ansible: test7
*/15 * * * * ansible-playbook  /web/playbooks/automation7/va_action.yml | tee -a /web/playbooks/automation7/cron.out


#Cron to restart Apache services on automation server

#Ansible: test3
0 2 * * * /web/apps/prod/apache/http-automation/bin/apachectl -k start

다음은 활성화된 cron 항목입니다.

crontab -l | grep  -v '#' | tr -d '\n'

*/15 * * * * ansible-playbook  /web/playbooks/automation7/va_action.yml | tee -a /web/playbooks/automation7/cron.out
0 2 * * * /web/apps/prod/apache/http-automation/bin/apachectl -k start

grep -B1나는 그것이 grep 문자열 위에 줄을 줄 것이라는 것을 알고 있습니다 .

위의 설명에서 볼 수 있듯이 활성화된 cron 항목은 다음과 같습니다.

#Ansible: test1
#Ansible: test7

그래서 다음을 사용하여 test1과 test7을 원하는 출력으로 나열하고 싶습니다.| awk '{print $2}'

원하는 출력:

test1
test7

답변1

awk처리된 출력에 대한 모든 작업을 수행하는 데 사용할 수 있습니다 crontab -l.

빈 줄을 무시하고, 주석 처리된 줄과 관련된 텍스트를 캡처하고, 추가 줄을 얻으면 캡처된 텍스트를 인쇄하는 것이 아이디어입니다. 두 번째 필드만 필요하다고 말씀하셨으므로 해당 필드만 저장하겠습니다.

crontab -l | awk '/^$/ { next ; }
                  /^#/ { text=$2 ; }
                  /^[^#]/ { print text; }'

작성하는 방법은 여러 가지가 있지만 이것이 가장 명확한 것 같습니다. 빈 줄, 로 시작하는 줄 #, 로 시작하지 않는 줄을 선택하는 3가지 모드가 있습니다 . 그러나 이는 활성 crontab의 각 항목에 주석을 달느냐에 따라 달라집니다.

관련 정보