Linux 시작 플래그에 있는 매개변수를 사용하여 사용자 정의 시작 스크립트를 실행하고 싶습니다.
나는 다음을 사용하여 시작할 때 플래그가 있는지 확인하기 위해 bash 스크립트를 실행하는 시스템 서비스를 만들 것이라고 생각합니다.
#!/bin/bash
CMDLINE="$(cat /proc/cmdline)"
if [[ "$CMDLINE" == *"myflag"* ]]; then
echo "It's there."
fi
더 좋은 방법이 있나요?
답변1
화려하게 꾸미고 싶다면 "더 나은" 접근 방식을 사용하는 것이 좋습니다.시스템 구축자SourcePath=/proc/cmdline
; 생성기가 커널 시작 매개변수를 사용하고 거기서부터 계속하도록 설정할 수 있습니다 .
당신이 사용하고 있는 시스템 단위를 고수하세요.단위 정의에서 조건 지정:
[Unit]
ConditionKernelCommandLine=myflag
systemd의 세부 사항을 다루지 않고도 스크립트가 이미 작업을 수행하고 있지만 더 컴팩트한 것을 원한다면 다음과 같이 다시 작성할 수 있습니다.
#!/bin/sh
if grep -qw myflag /proc/cmdline; then
echo "It's there."
fi
심지어
#!/bin/sh
grep -qw myflag /proc/cmdline && echo "It's there."
깃발이 우리에게 -q
말해준다grep
아니요출력 일치는 성공 또는 실패라는 종료 상태만 반영합니다. 이 -w
플래그는 전체 단어만 일치하도록 보장하므로 notmyflag
실행되지 않습니다.