Linux에 부팅 매개변수가 있는 경우 사용자 정의 스크립트를 실행하는 가장 좋은 방법은 무엇입니까?

Linux에 부팅 매개변수가 있는 경우 사용자 정의 스크립트를 실행하는 가장 좋은 방법은 무엇입니까?

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실행되지 않습니다.

관련 정보