← go back

Linux에 관한 필수 지식들


Linux에 대해
crontab에 대해
ping과 netstat
ssh에 대해
Linux 주요 명령어에 대해

Linux에 대해


Linux는 Unix 기반의 무료 오픈 소스 운영 체제입니다. 사용자 커뮤니티의 지원으로 확장성, 보안성, 안정성, 커스터마이즈성 등을 가지고 있습니다.


오픈 소스: Linux의 가장 큰 특징 중 하나는 소스 코드가 공개되어 있어 누구나 자유롭게 확인, 수정, 배포할 수 있다는 점입니다. 이로 인해 개발자 커뮤니티가 소프트웨어의 오류를 발견하고 개선하면서 끊임없이 발전해 나갑니다.

확장성: Linux는 확장성이 매우 높습니다. 이는 기본적인 최소한의 운영 체제 위에서 필요한 컴포넌트만 선택하여 설치할 수 있으므로, 필요에 따라 운영 체제를 경량화하거나 특정한 용도로 확장할 수 있습니다.

보안: Linux는 사용자 권한과 접근 권한을 철저히 관리함으로써 높은 보안성을 제공합니다. 또한 커뮤니티의 지원을 받아 보안 취약점이 발견되면 신속하게 패치됩니다.

안정성: Linux는 고도의 안정성을 제공합니다. 장기간에 걸쳐 시스템을 계속 실행하는 서버 환경에서 매우 중요한 요소로, 장애 없이 장시간 동안 실행할 수 있습니다.

커스터마이즈: Linux의 또 다른 장점은 사용자가 시스템을 자신의 필요에 맞게 사용자 정의할 수 있다는 것입니다. 이는 그래픽 사용자 인터페이스(GUI) 스타일부터 시스템 운영까지 다양한 수준에서 가능합니다.

다양한 배포판: Linux는 다양한 ‘배포판’으로 제공되며, 각 배포판은 특정 목표나 목적을 가지고 개발되었습니다. 예를 들어, Ubuntu, Fedora, CentOS, Debian 등은 다양한 환경에 맞게 개발된 배포판입니다.

crontab에 대해


crontab은 UNIX 기반 시스템에서 시간을 기반으로 작업을 스케줄링하는 도구입니다. 이는 주기적으로 실행되어야 하는 작업을 예약하고 관리하는데 사용됩니다.


crontab은 cron table의 줄임말로, ‘cron’이라는 데몬이 주기적으로 실행할 작업을 관리합니다. 이를 통해 사용자는 시스템 유지 보수, 데이터 백업, 보고서 생성 등의 작업을 자동으로 수행하도록 예약할 수 있습니다.

crontab 파일에는 각 줄마다 하나의 작업을 정의하며, 각 줄은 6개의 필드로 구성됩니다. 첫 5개의 필드는 작업이 실행될 시간과 날짜를 지정하고, 마지막 필드에는 실행할 명령을 작성합니다. 시간과 날짜 필드는 분(0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-7, 0과 7은 일요일) 순서로 구성됩니다.

crontab에 새 작업을 추가하려면 터미널에서 ‘crontab -e’ 명령을 사용하여 crontab 파일을 열어 수정하면 됩니다. 예를 들어, 매일 오전 5시에 백업 스크립트를 실행하도록 작업을 예약하려면 다음과 같이 작성할 수 있습니다.

0 5 * * * /path/to/backup_script.sh

이렇게 설정한 후에는 cron이 자동으로 이 작업을 매일 오전 5시에 실행합니다. ‘crontab -l’ 명령을 사용하면 현재 설정된 모든 cron 작업을 확인할 수 있습니다.

ping과 netstat


ping은 네트워크 연결 상태를 확인하는 도구로, 원격 호스트와의 연결성과 라운드-트립 시간을 확인할 수 있습니다. netstat은 네트워크 연결, 라우팅 테이블, 네트워크 인터페이스 등 네트워크 관련 정보를 보여주는 명령어입니다.


ping: ‘ping’ 명령어는 ICMP(Internet Control Message Protocol)를 이용해 원격 호스트에 에코 요청 패킷을 보내고 응답을 기다립니다. 원격 호스트가 응답하면 ‘ping’은 라운드-트립 시간(요청을 보낸 후 응답이 돌아오는 시간)과 패킷 손실률 등의 통계를 제공합니다. 이를 통해 네트워크 연결 상태를 확인하고 문제를 진단할 수 있습니다.

netstat: ‘netstat’ 명령어는 네트워크 연결, 라우팅 테이블, 인터페이스 상태 등 네트워크 상태에 관한 정보를 제공합니다. 이 명령어는 TCP/IP 네트워크 프로토콜 스택의 내부 상태를 표시하여, 어떤 호스트와의 연결이 활성화되어 있는지, 어떤 네트워크 포트가 열려있는지, 데이터가 어떻게 전송되는지 등을 확인할 수 있습니다. 이를 통해 네트워크 성능 문제나 보안 이슈를 진단할 수 있습니다.

ssh에 대해


SSH(Secure Shell)는 네트워크 프로토콜 중 하나로, 원격으로 다른 컴퓨터에 안전하게 접속할 수 있는 방법을 제공합니다.


  1. SSH 클라이언트 설치: Linux 시스템에는 기본적으로 SSH 클라이언트가 설치되어 있지만, Windows의 경우 별도로 SSH 클라이언트를 설치해야 합니다. 윈도우10 이상에서는 OpenSSH가 내장되어 있지만, 그 이전 버전에서는 별도의 SSH 클라이언트 프로그램(예: PuTTY)을 설치해야 합니다.

  2. SSH 서버 확인: 원격 접속하려는 Linux 시스템에는 SSH 서버가 실행되고 있어야 합니다. 일반적으로 Linux 배포판에는 SSH 서버가 포함되어 있지만, 실행 상태인지 또는 SSH 접근이 허용되어 있는지 확인해야 합니다. 이는 Linux 시스템의 설정 파일(/etc/ssh/sshd_config)에서 확인하거나, “sudo systemctl status ssh” 명령어를 통해 확인할 수 있습니다.

  3. SSH 접속: SSH 클라이언트를 이용하여 원격 Linux 시스템에 접속할 수 있습니다. 일반적으로 “ssh [사용자명]@[서버의 IP 주소 또는 도메인 이름]” 형식의 명령어를 사용합니다. 예를 들어, 사용자명이 ‘user’, 서버의 IP가 ‘192.168.0.1’인 경우 “ssh user@192.168.0.1”을 입력하면 됩니다.

  4. 인증: SSH 서버에 처음 접속하는 경우, 해당 서버의 공개키가 클라이언트에 저장되고, 이후 접속 시 이를 확인하여 보안을 유지합니다. 사용자명과 비밀번호를 입력하여 인증하거나, 미리 설정된 SSH 키를 통해 인증할 수 있습니다.

  5. 접속 종료: 원격 작업이 끝난 후에는 ‘exit’ 명령어를 입력하여 SSH 접속을 종료할 수 있습니다.

Linux 주요 명령어에 대해


Linux 명령어는 터미널에서 Linux 운영 체제를 제어하는 데 사용되는 텍스트 기반 명령어입니다.


다음은 Linux에서 주로 사용하는 명령어들입니다:

  1. ls: 현재 디렉토리의 내용을 나열합니다. -l 옵션을 함께 사용하면 정보(권한, 소유자, 그룹, 크기, 최종 수정 날짜, 파일 이름)를 볼 수 있습니다.

  2. cd: 디렉토리를 변경하는 데 사용합니다. 예를 들어, cd /home/user/Documents 명령어는 현재 위치를 /home/user/Documents로 변경합니다.

  3. pwd: 현재 디렉토리의 절대 경로를 출력합니다.

  4. cat: 파일의 내용을 출력합니다. 여러 파일을 지정하면 이들을 연결하여 출력합니다.

  5. rm: 파일이나 디렉토리를 삭제합니다. -r 옵션을 사용하면 디렉토리와 그 하위 내용을 모두 삭제합니다.

  6. cp: 파일이나 디렉토리를 복사합니다.

  7. mv: 파일이나 디렉토리를 이동하거나 이름을 변경합니다.

  8. touch: 새로운 빈 파일을 생성하거나, 이미 존재하는 파일의 수정 시간을 업데이트합니다.

  9. chmod: 파일이나 디렉토리의 권한을 변경합니다.

  10. sudo: 다른 사용자의 보안 권한(기본적으로는 슈퍼유저)으로 명령을 실행합니다.

  11. man: 다른 Linux 명령어의 매뉴얼 페이지를 보여줍니다. 예를 들어, man ls를 입력하면 ls 명령어에 대한 상세한 정보를 확인할 수 있습니다.