언제부턴가 시스템 프로그래밍 수업에 참여하면서 미리 수업을 듣고 오지도 않고, 즉석에서 피피티를 보면서 과제를 하는 내 모습을 발견할 수 있었다.

그리고 과제를 하다보니, 뒤로 갈수록 내용이 연계되는 것이 느껴지고 앞 부분의 내용이 탄탄하지 않으니 점점 더 어려워지는 것을 느낄 수 있었다. 그래서 복습 겸 수업 시간에 다루는 내용들을 블로그에 정리하고자 한다.


시스템 프로그래밍에서 배우는 내용

  • Handling files: open, read, write
  • Handling processes: fork, exec, exit, wait
  • Shell
  • Signals
  • Inter-process communication
  • Network programming

Linux 명령어 분류

  • display information
    • 일반 : man
    • 프로세스 : ps, who, finger, top, last, history
    • 파일
      • 위치 : find, which, whereis, locate
      • 일반 : ls, file
      • 내용 : cat, more, od, xxd, cmp, diff, wc, head, tail, objdump
      • 검색 : grep
      • 기타 : echo
    • 기타 : tty, pwd, date, cal, df, du, uname, mount, hostname, whoami, env
  • manipulate information

    • 프로세스 : kill, gcc, make, ctrl-c, ctrl-z, &, time, gdb
    • 파일
      • 에디터: vi, ed, sed
      • 파일 시스템 : fsck
      • 디렉토리 : cd, mkdir, rmdir
      • 일반 : ln, mv, cp, rm, gzip, gunzip, tar, touch
      • 권한 : chmod, umask, chown
    • 터미널/로그인 : login, exit, su, passwd, stty, clear
    • 커뮤니케이션 : write, mail, ftp, telnet, ifconfig
    • 쉘 : sh, csh, ksh

    Linux 파일 구조

  • / : 루트 디렉토리

  • /bin : 실행 파일

    • ls, zip, cat, chown, df, du, env, ftp, grep, ...
  • /etc : 시스템 구성 파일

    • etc/password : 패스워드 파일
    • etc/hostname : 서버의 이름
  • /home : 유저 홈 디렉토리

    • home/linuxer2 : linuxer2라는 유저의 홈 디렉토리
    • home/park : park라는 유저의 홈 디렉토리
  • /usr : 라이브러리, 헤더 파일

    • /usr/lib : 라이브러리 파일
    • /usr/include : 헤더 파일

    절대 경로, 상대 경로

    경로가 /로 시작하면 절대 경로, 그렇지 않으면 상대 경로이다.

  • cd /home/linuxer/12345 : 절대 경로

  • cd 12345 : 현재 디렉토리 안에 있는 디렉토리 12345

    • 만약 현재 디렉토리가 /home/linuxer1이었다면, /home/linuxer/12345로 이동한다.

주요 특수 기호

  • . : 현재 디렉토리
    • cp f1 ./f2 : f1 파일을 현재 디렉토리 안에 있는 f2 파일에 복사한다.
  • .. : 부모 디렉토리
    • cp f1 ../f2 : f1 파일을 부모 디렉토리 안에 있는 f2 파일에 복사한다.
  • > : standard output redirection , 표준 출력
    • cat f1 > f3 : f1의 내용을 f3 파일에 overwrite ( = cp f1 f3 )
  • | : pipe, 명령과 명령을 연결, 왼쪽 명령의 실행결과를 오른쪽 명령의 입력으로 전달
    • cat f1 | more : f1의 내용을 more 명령어를 사용하여 화면에 출력한다.
  • * : 모든 파일을 나타내는 기호
    • ls b* : 'b'로 시작하는 모든 파일/디렉토리 이름을 출력한다.

기본적인 명령어들

  • ls : 최근 디렉토리에 있는 파일과 서브 디렉토리들을 출력

    • ls –l : 자세한 내용을 출력
      - 퍼미션(권한), 포함된 파일수, 소유자, 그룹, 파일크기, 수정일자, 파일이름
    • ls –a : 숨겨진 파일이나 디렉토리를 포함하여 출력
    • ls -al : 숨겨진 파일이나 디렉토리를 포함하여, 자세한 내용을 출력
    • ls ex* : 'ex'로 시작하는 모든 파일을 출력
  • pwd : Present Working Directory, 현재 작업 중인 디렉토리 정보를 출력

  • cd : 경로 이동, 절대 경로와 상대 경로 둘 다 가능

    • cd / : “/”(root directory)로 이동
    • cd /dev : /dev로 이동
    • cd .. : 부모(상위) 디렉토리로 이동
    • cd . : 현재 디렉토리로 이동, 움직임 X
    • cd : home directory(로그인했을 때 위치하는 디렉토리)로 이동
  • man : 각종 명령어, 프로그램, c-lib 함수 등의 사용법을 확인하는 명령어, 다음 스크린으로 이동하려면 space, 화면을 나가려면 q 버튼을 누른다.

    • man ls : ls 명령어의 사용법을 출력
      man 명령어의 경우 man 1~ man 8까지 있는데, 궁금하다면 이 링크로 들어가서 확인하자.
  • ps : 현재 실행중인 프로세스 목록과 상태를 나타내는 명령어

    • PID: process ID, 프로세스의 식별 번호
    • TTY: 프로세스와 연결된 터미널
    • TIME: 총 CPU 사용 시간
    • CMD: command, 프로세스의 실행 명령



    • ps –ef : 동작중인 모든 프로세스를 출력
    • ps –ef | more : pipeline the output of ps –ef to more, 모든 프로세스를 자세히 출력하고 한 페이지씩 화면에 출력
  • mkdir : 디렉토리를 생성하는 명령어

    • ex) mkdir d1
  • rmdir : 디렉토리를 제거하는 명령어

  • echo : 인수로 전달되는 텍스트/문자열을 표시

    • echo korea : korea를 터미널에 출력
    • echo korea > f1 : redirect the standard output file of
      “echo” to f1, "korea"가 파일 f1에 쓰여짐
  • cp, rm, mv: 파일을 복사, 제거, 이름 변경하는 명령어

    • cp f1 f2 : f1 파일을 f2 파일에 복사
    • rm f4 : f4 파일을 제거
    • mv f2 f3 : 파일의 이름을 f2에서 f3로 변경
  • grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용하는 명령어

    • -n : 검색 결과 출력 라인 앞에 라인 번호 출력
    • -r : 하위 디렉토리까지 탐색
    • ex) grep –nr “ko” * : "ko" 문자열을 포함하는 모든 파일을 탐색, 라인 번호를 출력하고, 현재 디렉토리의 하위 디렉토리들도 모두 탐색
  • cat : 파일의 내용을 출력하는 명령어

    • cat f1 : f1 파일의 내용을 출력
    • cat f1 > f2 : redirect the standard output file of “cat” to f2, f1 파일의 내용을 f2 파일에 복사한다.
    • cat > f3 : 키보드로 입력하는 내용을 받아 f3 파일에 저장, ^D로 입력의 끝을 정한다.
  • more : 파일을 읽어 화ㅕㅁㄴ에 화면 단위로 끊어서 출력하는 명령어, space로 다음 화면으로 넘어가고, q 버튼을 이용하여 중단한다.
    how the contents of a file one screen at a time.

    • ps –ef | more : pipeline the output of ps –ef to more, 모든 프로세스를 자세히 출력하고 한 페이지씩 화면에 출력
  • less : more과 같은 목적의 명령어. more는 위에서 아래 방향으로만 출력되어 지나간 내용을 다시 볼 수 없지만, less는 한 번에 보여지는 마ㄴ큼만 읽어서 출력하기 때문에 대용량 파일을 열어 볼 때 빠르게 사용할 수 있음

  • xxd : 파일을 16진수로 읽는 명령어

    • ex) xxd f1
  • uname : 시스템의 정보를 확인하는 명령어

  • whereis : 명령어의 실행 파일 위치, 소스 위치, man 페이지 파일의 위치를 찾아주는 명령어

    • ex) whereis kill
  • which : 특정 명령어의 위치를 찾아주는 명령어

    • -a : 검색 가능한 모든 경로에서 해당 명령어를 찾음
    • ex) which kill
  • whoami : 현재 로그인한 사용자를 보여준다.

  • find : 파일 및 디렉토리를 검색할 때 사용하는 명령어

    • ex) find / -name "stdio.h" -print : /에서 시작해서 "stdio.h"의 위치를 찾는다.
  • file : 파일의 종류(타입)을 확인하는 명령어

    • ex) file f1
  • locate : 파일 및 디렉토리를 이름으로 검색하는 가장 빠르고 간단한 방법

profile
[~2023.04] 블로그 이전했습니다 ㅎㅎ https://leeeeeyeon-dev.tistory.com/

0개의 댓글