셸이 작동하여 프롬프트($)가 표시되었다.
그래픽 기반과 텍스트 기반. 두 가지 로그인 방식.
그래픽 유저 인터페이스(GUI) / 커맨드 라인 인터페이스(CLI)
GUI
란 화면상에 보이는 아이콘, 창, 메뉴 등을 마우스나 터치패드로 클릭하여 컴퓨터에 명령을 내리는 인터페이스를 말한다. 윈도나 맥을 사용한다면 쉽게 볼 수 있는 인터페이스이다.
CLI
란 키보드로 명령어를 입력하고 결과가 문자열로 출력되는 인터페이스를 말한다.
예를 들어 파일 a.txt를 b.txt로 복사하는 경우?
cp
라는 명령어를 사용한다. (copy) cp a.txt b.txt
예를 들어 어떤 디렉토리에서 이름이 a로 시작하는 파일을 전부 선택하는 경우를 생각해 보자. GUI에서는 파일 이름을 눈으로 확인하면서 조심스레 선택해야 하고, 파일이 100개, 10,000개라면 결코 쉽지 않은 일이 된다.
하지만 CLI에서는 a*
라고 입력하면 a로 시작하는 파일을 전부 선택할 수 있다.
ls a*
는 a로 시작하는 모든 파일을 출력한다.
리눅스에서는 작은 프로그램들을 서로 연결해 좀 더 크고 복잡한 동작을 실행한다.
대표적으로 프로그램의 입출력을 서로 주고받을 수 있는 파이프(|)
라는 기능이 있다.
grep "abc" sample.txt | sort
라고 입력하게 되면 grep과 sort라는 두 명령어를 연결해 sample.txt에서 abc라는 문자열을 검색한 뒤, 그 결과를 정렬하여 출력하라고 지시한다. 두 명령어를 파이프(|)
로 연결한 것이다. GUI에서는 이러한 프로그램 간의 입출력 연동이 어렵다는 것.
CLI에서는 실행할 명령어들을 파일에 기록해 놓고 일괄로 실행하는 것이 가능하다.
따라서 자주 사용하는 명령어의 흐름을 파일에 기록해 두면 쉽고 정확하게 실행하는 것이 가능하다. 앞서 설명했듯이 프로그램 간 연동도 쉽기에 여러 명령어를 조합해 자기만의 명령어를 만들어 자동화를 할 수 있게 된다.
CLI로 로그인했다면 exit
명령어를 사용하여 로그아웃한다.
원래 exit
명령어는 셸을 종료하는 명령어지만, 셸이 종료되면 자동적으로 로그아웃된다.
GUI의 터미널에서 이 명령어를 실행해보면 터미널만 종료될 뿐 로그아웃은 되지 않는다.
이는 터미널이 로그인 셸이 아니기 때문. GUI에서는 메뉴를 통해 로그아웃해야 한다.
우분투에서는 화면 우측 상단의 로그아웃을 누르면 된다.
컴퓨터의 전원을 끄려고 OS를 완전히 정지시키는 것을 셧다운이라고 한다.
컴퓨터 전원을 끄기 전에는 반드시 운영 체제를 정상적으로 종료하는 것이 좋다. 여러 프로그램이 백그라운드에서 돌아가고 있기 때문.
리눅스를 셧다운하려면 shutdown
명령어를 사용한다. 이 명령어를 실행하기 위해서는 슈퍼 사용자 (root user)
로 전환해야 하는데, 전환하는 방법은 다음과 같다.
이렇게 슈퍼 사용자가 되면 프롬프트의 기호가 $에서 #로 바뀌게 된다.
셧다운을 실행해보자.
shutdown -h now
-h 옵션은 전원을 끄는 것을 의미한다.
shutdown -r now
-r 옵션은 재부팅을 의미한다.
아래와 같이 재부팅이 이루어진다.
리눅스의 셧다운
- 윈도나 macOS 같은 데스크톱을 사용할 때는 작업을 완료한 뒤 셧다운하고 전원을 끄는 것이 일반적이나, 리눅스에서는 로그아웃은 하지만 셧다운은 하지 않는 경우가 대부분이다. 특히 서비스를 제공하는 리눅스 서버는 몇 년 동안 셧다운하지 않기도 한다. 장비의 유지보수나 장애 대응과 같은 경우에만 제한적으로 셧다운을 진행한다.