0부터 시작하는 Linux 공부 - Linux 명령어 돌아보기
0. 시작하기 앞서
인스턴스 생성할 때 필요한 것
- 이미지 ( 템플릿 ) 선택
- Flavor ( 사양 ) 선택
- Ip ( 동적 Nat ) -> ( 정적 Nat / EIp 로 선택 가능 )
- Key-Pair ( 사용자 인증 ) / 인스턴스는 Public Key를 갖는다
- AML 에서 USER는 ec2-user로 이 user는 wheel 그룹에 들어가 있으므로, sudo를 통해 필요할 때 마다 root의 권한을 사용할 수 있다
OS 의 구조
- 컨테이너를 만들때는 리눅스 KERNEL의 네임스페이스 기능을 통해 각 작업 공간을 격리 시키고, C GROUP을 통해 각 공간마다 따로 자원을 할당해준다
- 만약, KERNEL에 네임스페이스나 C GROUP 에 대한 코드가 없다면, 도커가 컨테이너를 생성할 때 물리 자원에 접근할 수 없으므로, 생성이 불가능하다. 이때는, 해당 기능이 있는 KERNEL로 UPDATE 해야 한다
- 리눅스는 KERNEL이 오픈되어 있어서, 프로그램을 만들때 이 KERNEL에 맞게 만들 수 있다. 따라서, 리눅스 KERNEL에 맞게 만들어진 프로그램들은 서로 호환이 잘 되므로, 서비스 환경을 만드는데 유용하다
1. 리눅스 환경 변수
- operator는 서비스 실행을 위한 계정으로 로그인이 불가능 해서 할당 받은 shell이 nologin이라고 표시된다. 이 계정은 파일 생성과 같은 작업은 불가능하며, 서비스 실행만을 위한 계정이다
- 사용자는 로그인을 하게 되면 각 사용자 별로 별도의 시스템 환경 변수를 할당 받는다. printenv로 할당 받은 환경 변수를 확인 가능 하다
2. 명령 연속 실행
- 연속된 2개 이상의 명령어를 한 번에 실행하고자 한다면
- 명령 ; 명령 : 앞 쪽 명령어에서 오류가 나도, 뒤 쪽 명령어를 실행한다
- 명령 && 명령 : 앞 쪽 명령어에서 오류가 나면, 뒤 쪽 명령어는 실행을 하지 않는다. 즉, 앞 쪽 명령이 잘 실행 됬을 경우에만 뒤 쪽 명령어를 실행 하고 싶을 때 사용한다
- 명령 뒤에 \ 를 붙이면, 명령을 끝내지 않고, 밑에 줄에 명령을 계속 이어 갈 수 있게 한다
3. Redirection
- redirection ( > , >> , < , << )
- 표준 입력 : 키보드 ( 0 )
- 표준 출력 : 화면 ( 1 )
- 표준 에러 : 화면 ( 2 )
- redirection 으로 입력과 출력의 방향을 변경할 수 있다. 즉, 입력은 키보드로 하되, 출력은 화면이 아닌, 생성한 파일로 보낼 수 있다
- 다음과 같이 명령 실행 결과도 보낼 수 있다
- 다음과 같이 에러만 담을 수 있게 2로 설정하면, 명령 결과가 화면에 출력된다. 이는, 에러만 담을 수 있게 설정했기에, 파일을 확인해보면 아무것도 담겨있지 않다
- 입력 1> 파일명 : 정상 처리 결과 값만 파일에 저장
- 입력 2> 파일명 : 오류 결과 값만 파일에 저장
4. TREE
- 폴더를 두 개 동시에 생성한다. 이는 a 폴더 안에 b 폴더가 담겨져 있다. 만약 생성시 아래와 같이 /a를 하게 되면, 이는 절대 경로로 root 홈 디렉토리에서 작업하게 되므로 조심하자
- tree를 설치해주자
- tree를 통해 구조를 확인할 수 있다
- 다음과 같이 안에 내용이 있는 폴더를 복사하면, 내용물도 같이 복사된다
5. MV
- mv 는 파일이나 디렉토리를 이동하는 기능이 있으며, 동일 Directory 내에서 사용하게 되면 이름을 변경하는 효과가 있다
6. ls 옵션
- 다음과 같이 ls 뒤에 a를 치면 a 폴더 안의 내용물을 보여준다
- ls a : a 디렉토리 내에 있는 파일 / 디렉토리를 보여준다
- ls | grep a : 현재 디렉토리 에서 a라는 이름의 디렉토리나 파일이 있다면 화면에 보여준다
- 다음과 같이 txt라는 단어가 있는 파일 / 디렉토리만 보여준다
- 다음과 같이 a*로 하면 a로 시작하는 파일 / 디렉토리를 모두 보여준다. 만약 해당하는 디렉토리가 있다면 내부의 내용물도 같이 보여준다
- grep 은 특정 단어에 매치되는 파일이나 디렉토리 등을 출력시켜준다
7. 삭제
- 디렉토리 삭제 -> rmdir : 비어있는 디렉토리 삭제 가능
- 파일 삭제 -> rm ( alias rm = 'rm-i' 되있기에 삭제할 때 마다 물어본다 )
- rm -f : force 옵션으로 물어보지 않고, 바로 삭제하게 한다
- rm -r : 비어있지 않은 디렉토리 삭제
- rm -rf : 파일이나 디렉토리를 물어보지 않고, 즉시 삭제 한다 ( 비어있지 않아도 삭제 )
- 위와 같이 패턴을 추가해서, a로 시작하는 모든 파일 / 디렉토리를 삭제할 수 있다
- 위와 같이 .txt로 끝나는 파일, 즉, 확장자가 txt인 파일들을 모두 삭제할 수 있다
8. 파일 내용 살펴보기
1. grep 이용
- anaconda-ks.cfg 를 복사해 온다
- 위 명령어는 grep으로 해당 파일 내용을 살펴봤을 때, root라는 단어가 있다면, 해당 행을 출력하는 것이다
- 파일 내에서 특정 문자열이 있다면 해당 행을 출력하라
2. cat
3. more / less
- more : 페이지 단위로 출력하며, 전체 페이지에서 몇 % 까지 봤는지 알려준다. space / enter / b 키를 통해 조작 가능. q 로 나온다
- less : 페이지 단위로 출력하며, 방향키 사용 가능. q 로 나온다
4. head / tail
- head : 파일의 상단 10줄
- tail : 파일의 하단 10줄, tail의 경우에는 실시간으로 특정 파일의 내용 / 로그 등을 확인할 때 유용하다
- 일반적으로 로그는 /var/log 에 있다
- httpd 를 실행시켜서 접속해보면, 다음과 같이 httpd 안에 log 파일들이 생긴다
- log 파일의 내용을 살펴보면, 누가 접근했는지 알 수 있다
- -f는 실시간 볼 수 있게해주는 의미다. - 3f는 마지막에서 3줄만 출력하게 해준 것 이다
- 위와 같이 실시간으로 웹 접속 기록을 확인할 수 있다