리눅스 기본 명령어 - Processes, File operations

Hyungseop Lee·2023년 9월 24일
0
post-thumbnail

Processes

Process types

  • process :

    • an instance of one or more related tasks executing a program/command
    • use system resources(CPU, IO devices, memory, ...)
    • OS(특히 kernel이 관리)는 각 process에 resource를 할당해준다.
  • Process Types :

    • Interactive process :
      Started by a user and communicate with the user through command/graphical interface.
      ex) bash, top, ls, find
    • Batch process :
      Automatic processes which are scheduled from and then disconnected from the terminal (순차적으로 실행된다)
      ex) ldconfig, updatedb
    • Daemon :
      Server processes that run continuously.
      ex) httpd, sshd, libvirtd
    • Threads :
      Lightweight process.
      A process can have many threads sharing its memory space.
      한 process에서 여러 일을 동시에 처리할 수 있도록 threads를 생성하여 programming할 수 있음.
      ex) firefox(web browser)
    • Kernel threads :
      Kernel도 하나의 큰 process로 볼 수 있고, 그 안에서도 여러 job을 동시에 실행한다.
      ps command를 통해 확인할 수 있다.
      ex) Kthreadd, ksoftirqd

Process Scheduling and States

  • Kernel choose a process to run on CPU according to their priority.
    (Kernel에 scheduler라는 module이 어떤 process를 사용할지 결정한다)
  • 처리중인 process : running state
  • 쉬고 있는 process : sleep state
    • ex) writing to disk : CPU 입장에서 disk가 너무 느리기 때문에 disk가 file에 write하는 것을 기다리지 않고 sleep state로 바꾼다.

PID

  • Process ID = PID : OS에서 부여한 Unique ID of a process

  • Parent Process ID = PPID : ID of a parent that started this process.

    • process는 다른 process가 생성한다.
      system이 booting될 때,
      가장 먼저 init process가 실행됨 (Linux는 systemd라는 daemon process)
      init process인 systemd가 생성되면,
      systemd가 process1, process2를 생성
      process1이 process3, ...를 생성
      ➡️ p1, p2의 PPID = systemd의 PID
      ➡️ p3의 PPID = p1의 PID
  • Thread ID = TID : each thread has a unique TID.

    • 하나의 process 안에서도 여러 개의 thread가 있을 수 있는데,
      thread들도 고유한 thread ID가 있다.

ps, pstree, top, kill

ps

  • ps : provides information about running processes

    • ps : displays all processes running

    • ps -ef : displays all process in the system

      • "ps -ef"의 PPID = 2017.
        PID=2017은 bash라는 process이다.
        bash : born again shell
        bash가 program을 읽어서 memory에 넣어서 실행시킴.
        bash의 PPID를 따라가다 보면, init process가 생성한 것을 볼 수 있다.
      • [ksoftirqd/0] 처럼 *d로 끝나는 process들은 daemon process.
  • ps -eLf : more info about thread

  • 현재 몇개의 process가 실행되고 있는지 확인하기

pstree

  • pstree : displays the processes in the form of a tree diagram
    systemd가 init process임을 알 수 있다.

top

  • top :
    • update process status regularly
    • CPU가 많이 점유하고 있는 process들을 위에 보여준다.
      (computer의 resource를 많이 잡아먹는 process를 파악하는 데에 유리하다)
    • PR : Priority.
      (값이 작을수록 우선순위가 높다. kernel이 실행시킨 것은 매우 중요한 process이기 때문에-가 붙음.)
    • NI : root user가 설정 가능한 Priority
    • %CPU 100 : core 1개를 쓰고 있다.
      %CPU 137.7 : core 2개를 쓰고 있다.
    • Total 195 : cpu가 20개 있는데 어떻게 195개가 실행되고 있는가?
      OS의 kernel에 의해 scheduling된다.
      그래서 실제로 running process는 1개. sleeping process는 194개인 것이다.

kill

  • kill : to terminate a process

  • kill을 test해보기 위해, process 중간에 sleep을 하는 program을 생성하고
    sleep하는 동안 kill로 해당 process를 종료시켜볼 것이다.

    • sleep 함수를 사용할 수 있도록 manual page 참고
    • mysleep 실행파일을 실행시키기
    • ps로 mysleep process의 PID를 확인 후 kill

Background and Foreground jobs

  • In Linux, a job is a command launched from a terminal window(=shell)

  • Foreground job : runs directly from the shell.

    • CTRL-Z : suspend a foreground job.
    • CTRL-C : terminate a foreground job.
  • Background job :

    • Use suffix '&' to launch a command in the background
    • forground job들은 실행이 완료되기 전까지 shell을 쓸 수가 없다.
      ls, pwd와 같은 작은 job은 문제가 되지 않지만,
      실행시간이 긴 job들은 shell을 쓸 수 없게 되어서 Background job이 만들어졌다.
      example :
      mysleep을 background job으로 실행되도록 했으니
      ls, pwd와 같은 job들을 계속해서 사용할 수 있다.

jobs

  • jobs : displays all jobs running in the both foreground and background.

  • fg and bg : command to run a job in the background and foreground, repectively.

  • Managing jobs example :


File operations

Partitions and filesystems

  • In Linux(Unix), "Everything is a file".

    • Everything is treaded as a file
  • Filesystem is structured like a tree.

    • The start of the tree is called "root directory"

Mount

  • mount : command is used to attach a filesystem somewhere within the filesystem tree.
    • /dev/vda2를 /home에 마운트.
      home directory에 작업한 것은 /dev/vda2에 작성됨

Comparing files

diff

  • diff : is used to compare files and directories

Backing up files

  • rsync :
    • copies files/directories to both local/remote locations
    • is very useful to back up a project directory.
  • 한 컴퓨터 안에서 copy하려면 cp 명령어를 이용하면 되는데,
    원격의 컴퓨터에 backup을 위해 copy하려면 rsync 이용

Compressing files

1. 파일 하나를 압축

  • gzip : The most frequently used Linux compression utility
    • Uncompression : gzip -d or gunzip
  • bzip2 : Produces files significantly smaller than those produced by gzip
    • Uncompression : bzip -d or bunzip2
  • zip : Often requried to decompress archives from Windows
    • Uncompression : unzip

2. 여러 파일을 압축

  • tar : is often used to group files in an archive and then compress the whole archive at once
    1. 압축 말고 모으만 놓기(tar cvf), 풀기(tar xvf)
    2. gzip으로 압축하기(tar zcvf), 풀기(tar xvf)
    3. bzip2로 압축하기(tar jcvf), 풀기(tar xvf)
    4. 모아놓고(tar cvf), 압축하기(gzip), 압축만 풀기(gunzip), 모아놓은 거 풀기(tar xvf)
profile
Efficient Deep Learning Model

0개의 댓글