상세 컨텐츠

본문 제목

DevOps 엔지니어를 위한 BASH/Linux 면접 질문

Dev Type

by ai developer 2024. 4. 16. 20:49

본문

1. 쉘 스크립팅에 사용되는 다양한 유형의 변수는 무엇입니까?

쉘 스크립팅에는 다음과 같은 두 가지 유형의 변수가 사용됩니다.

1. 시스템 생성 변수 - 이름에서 알 수 있듯이 운영 체제에서 생성된 변수입니다. 이러한 변수는 Set 명령을 호출하여 볼 수 있습니다.

2. 사용자 정의 변수 - 사용자가 생성한 변수로, echo 명령을 호출하여 볼 수 있습니다.

2. 이름이 example인 파일이 경로에 존재하는지 여부를 어떻게 확인합니까?

및 명령 [은 test본질적으로 스위치입니다. trueor 응답을 내보내 false지만 둘 다 성공으로 간주합니다. 명령을 &&및 같은 논리 연산자와 쌍을 이루어 이를 사용할 수 있습니다 ||. &&응답이 다음과 같을 때 연산자가 실행 됩니다 true.

$ touch example
$ test -e example && echo "foo"
foo
$ test -e notafile && echo "foo"
$

 

|| 응답이 다음과 같을 때 연산자가 실행 됩니다 false.

 

$ touch example
$ test -e example || echo "foo"
$ test -e notafile || echo "foo"
foo
$

 

원하는 경우 대신 대괄호를 사용할 수 있습니다 test. 모든 경우에 결과는 동일합니다.

 

$ touch example
$ [ -e example ] && echo "foo"
foo
$ [ -e notafile ] && echo "foo"
$

3. 파일이 생성될 때 파일의 기본 권한은 무엇입니까?

Linux 또는 UNIX에서 생성된 모든 파일에는 기본 권한이 있으며 파일 권한을 보려면 새로 생성된 파일에 대해 unmask 또는 user 마스크 명령이 사용됩니다. 기호값을 설정하고 표현하는데 사용되는 4자리 8진수입니다. 새로 생성된 파일의 기본 권한은 rw-rw-r 이며 664 입니다 .

4. CRONTAB이란 무엇입니까?

CRON 테이블을 표현하는데 사용됩니다. CRON 일정을 사용하여 작업을 실행합니다. 정기적인 스케줄러 작업을 실행하는 데 사용되는 명령 목록입니다. 스케줄러의 이름은 CRONTAB입니다.

5. 쉘 스크립트와 쉘 프로그램에서 발생한 문제를 어떻게 디버깅합니까?

  1. 첫 번째 방법은 쉘 스크립트 프로그램에 디버그 명령을 넣어 프로그램의 오류나 버그를 출력하거나 표시하는 것입니다.
  2. 두 번째 방법은 set –x를 사용하여 스크립트를 디버깅하는 것입니다.

6. 쉘 스크립트 명령을 사용하여 디스크 사용량을 어떻게 알 수 있습니까?

쉘 스크립트 명령을 사용하여 디스크 사용량을 확인하는 세 가지 방법이 있습니다.

  • dfspace 명령: — 이는 여유 디스크 사용량을 메가바이트 단위로 확인하는 데 사용됩니다.
  • df 명령: — 여유 디스크 공간을 확인하는 데 사용됩니다.
  • du 명령: — 디렉터리별 디스크 사용량을 확인하는 데 사용됩니다.
    예: du -sh /data01/*

7. 쉐뱅라인의 목적을 알려주세요.

shebang 라인은 엔진의 위치를 ​​결정하는 데 사용되는 각 스크립트의 상단에 있으며 스크립트를 실행하는 데 사용됩니다.

8. Linux 프로세스의 4단계에 대해 설명하세요.

4단계에는 다음이 포함됩니다.

  • 대기 중 - Linux 프로세스가 리소스를 기다리고 있습니다.
  • 실행 중 - Linux 프로세스가 현재 실행 중입니다.
  • 중지됨 - 성공적인 실행 후 Linux 프로세스가 중지되었습니다.
  • 좀비 - Linux 프로세스가 프로세스 테이블에서 계속 활성화되어 있지만 중지되었습니다.

9. 메타문자란 무엇입니까?

메타문자는 프로그램이나 쉘의 데이터 필드에 포함된 고유한 문자입니다. 다른 캐릭터에 대한 정보를 제공합니다. 예를 들어, 문자 's'로 시작하는 모든 파일을 나열하려면 'ls s*' 명령을 사용하십시오.

10. 경로에서 모든 .txt 파일의 이름을 .log로 바꿉니다.

ls | cut -d. -f1 | xargs -i mv {}.txt {}.log

 

11. 쉘 스크립트에서 명령줄 인수를 읽는 방법은 무엇입니까?

Bash 쉘에는 쉘 스크립트를 통해 전달하는 인수를 가리키도록 예약된 특수 변수가 있습니다. Bash는 이러한 변수를 숫자로 저장합니다($1, $2, $3, … $n).

위치 매개변수인 특수 문자도 있지만 해당 기능은 명령줄 인수와 밀접하게 연결되어 있습니다.

특수 문자 $#는 총 인수 수를 저장합니다. 또한 모든 인수를 나타내는 데 사용되는 와일드카드 문자로 $@  $* 가 있습니다 . $$를 사용하여 현재 쉘 스크립트의 프로세스 ID를 찾는 반면, $? 스크립트의 종료 코드를 인쇄하는 데 사용할 수 있습니다.

#!/bin/sh
echo "Script Name: $0"
echo "First Parameter of the script is $1"
echo "The second Parameter is $2"
echo "The complete list of arguments is $@"
echo "Total Number of Parameters: $#"
echo "The process ID is $$"
echo "Exit code for the script: $?"
./PositionalParameters.sh learning command line arguments

 

12. Linux에서 표준 스트림의 이름을 지정합니다.

Linux의 표준 스트림은 표준 입력, 표준 출력 및 표준 오류입니다.

13. $@와 $*를 구별하세요

$*는 전체 위치 인수 집합을 단일 문자열로 간주하는 반면, $@는 각 인용 인수를 별도의 인수로 처리합니다.

14. 조건문을 사용하여 파일 시스템에 파일이 존재하는지 확인하는 방법

if [ -f /var/log/messages ]
then
echo "File exists."
fi

 

15. echo 명령을 사용하여 문자열 변수의 일부를 가져옵니다.

echo ${variable:x:y}
여기서 X는 시작 위치이고 y는 문자열 길이입니다.

variable="Her name is Jen, and she is a developer."
echo ${variable:12:6} 

#Output:
#Jen, a
#As J is at index 12 start from 0, and followed by 6 characters

16. [[ $string == “efg*” ]] 와 [[ $string == efg* ]] 사이의 차이점은 무엇입니까?

[[ $string == efg* ]] > 문자열이 efg로 시작하는지 확인합니다.

[[ $string == “efg*” ]] > 문자열이 efg인지 확인합니다.

17. SSH 인증

tail -n 10 /var/log/secure 
tail -n 10 /var/log/auth.log

home 또는 ~/.ssh 디렉토리에 그룹 쓰기 권한이 있는 경우 SSH는 이를 좋아하지 않습니다. 홈 디렉토리는 본인만 쓸 수 있어야 하며 ~/.ssh 는 700, Authorized_keys 는 600 이어야 합니다.

chmod 700 /home/user 
chmod 700 /home/user/.ssh 
chmod 600 /home/user/.ssh/authorized_keys

18. 특수 쉘 변수는 무엇입니까$?

Bash의 특수 쉘 변수는 $?마지막 명령이나 가장 최근에 실행된 프로세스의 종료 상태를 가져오는 데 사용됩니다. 변수 를 사용하여 $?명령이 성공적으로 실행되었는지 여부를 확인하고 결과에 따라 적절한 조치를 취할 수 있습니다. 0이 아닌(1–255) 종료 상태는 실패를 나타냅니다.

#!/bin/bash

# Try to copy a file that does not exist
cp foo.txt bar.txt

# Check the exit status of the cp command
if [ $? -eq 0 ]; then
  echo "Copy successful"
else
  echo "Copy failed"
fi

# Output:
# cp: foo.txt: No such file or directory
# Copy failed

19. 무엇을 grep -oP '\d+'합니까?

grep -oP '\d+'텍스트의 숫자만 검색하여 출력하는 데 사용됩니다. \d+하나 이상의 숫자와 일치하는 정규식 패턴입니다. 플래그 -o는 일치하는 패턴만 인쇄되도록 보장하고 -P플래그는 Perl 호환 정규식을 활성화합니다.

echo "finnone-integration [Version=RevNo.201963]" | grep -oP '\d+'
# Output: 201963

20. 목록 방식으로만 파일 이름을 나열하는 방법.

ls -1다른 속성 없이 파일 이름만 표시됩니다.

ls -1a다른 속성 없이 모든 파일 이름만 표시됩니다.

나중에 사용할 수 있도록 출력을 변수에 저장합니다.filelist=`ls -1 /somedir/`

21. zip 파일에 디렉토리가 포함되어 있는지 확인하는 방법

unzip -l yourfile.zip | grep -q "/$"

설명:

  •  unzip -l명령은 zip 파일의 내용을 나열합니다.
  •  grep -q "/$"명령은 디렉터리를 나타내는 슬래시로 끝나는 줄을 검색합니다.
  •  -q옵션은 출력을 억제하는 데 사용되며 반환 코드에만 관심이 있습니다.

zip 파일에 디렉터리가 포함되어 있으면 명령은 반환 코드 0으로 종료됩니다. zip 파일에 디렉터리가 없으면 명령은 0이 아닌 반환 코드로 종료됩니다.

예:

if unzip -l yourfile.zip | grep -q "/$"; then
    echo "The zip file contains a directory."
else
    echo "The zip file does not contain a directory."
fi

22. 쉘 변수 주위에 중괄호가 필요한 경우는 언제입니까?

변수에서 읽으 려면 (즉, 변수를 확장하려면 ) 다음을 사용해야 합니다.$

$var      # use the variable
${var}    # same as above
${var}bar # expand var, and append "bar" too
$varbar   # same as ${varbar}, i.e expand a variable called varbar, if it exists.

중괄호는 다음과 같은 경우에도 무조건 필요합니다.

  • 다음과 같이 배열 요소를 확장합니다.${array[42]}
  • ${filename%.*}(확장 제거) 와 같이 매개변수 확장 작업을 사용하여
  • 위치 매개변수를 9개 이상으로 확장:"$8 $9 ${10} ${11}"

 

300x250

관련글 더보기

댓글 영역