배우는 내용 : [ PS 명령어  → 실행 중인 프로세스 출력 ]

프로세스란?

메모리위에 실행중인 프로그램

 

참고 : [책 / 운영체제와 정보기술의 원리] - 5 장 프로세스 관리

 

5 장 프로세스 관리

1. 프로세스의 개념 프로세스(process) ? 메모리에 올라가서 실행 중인 프로그램 - 프로그램? : 디스크에 실행파일 형태로 존재하는 것 프로세스를 이해하기 위해 알아야 하는 것 프로세스의 문맥(co

joey0203.tistory.com

 

부모 프로세스 : 운영체제가 만든 프로세스, 새로운 프로세스를 만드는 프로세스

자식 프로세스 : 부모 프로세스가 새롭게 만든 프로세스

 (예시) 셸에서 ls 명령어를 실행 -> 셸 (부모  프로세스), ls 명령어 (자식 프로세스)

 

◼︎ 프로세스 목록 출력 : 현재 접속한 터미널

 $ ps

   PID TTY          TIME CMD
  24858 pts/0    00:00:00 bash
  24881 pts/0    00:00:00 ps

- PID : 프로세스의 ID ,    CMD : 실행한 명령어

같은 명령어를 두 번 실행한 경우 다른 PID 값이 할당됨

이 ID 는 프로세스가 종료될 때까지 변하지 않음

 

◼︎ 현재 접속한 터미널 이외의 프로세스 목록 출력 : 프로세스 Deamon 출력 

$ ps xf // x 옵션으로 확인 가능 + 부모관계를 표시하는 f 추가

    PID TTY      STAT   TIME COMMAND
  24857 ?        S      0:00 sshd: ubuntu@pts/0
  24858 pts/0    Ss     0:00  \_ -bash
  24884 pts/0    R+     0:00      \_ ps xf
   4961 ?        Ssl    3:27 PM2 v5.3.1: God Daemon (/home/ubuntu/.pm2)
   4972 ?        Ssl   25:36  \_ node /home/ubuntu/mini-project-subway-locker-no
   1201 ?        Ss     0:00 /lib/systemd/systemd --user
   1202 ?        S      0:00  \_ (sd-pam)

           터미널에서 실행 중인 프로세스나 터미널과 무관하게 돌아가는 프로세스인 데몬(daemon) 을 출력할 때 사용

            TYY (터미널) 에서 ? 로 표시 된것 = 해당 프로세스가 터미널에 접속되어 있지 않은 데몬을 의미

◼︎ 모든 프로세스 출력

$ ps ax

    PID TTY      STAT   TIME COMMAND
      1 ?        Ss     0:12 /sbin/init
      ...................
  24857 ?        S      0:00 sshd: ubuntu@pts/0
  24858 pts/0    Ss     0:00 -bash
  24885 pts/0    R+     0:00 ps ax

 

 

자주 사용하는 옵션

옵션 의미
ps 명령어를 실행한 사용자의 프로세스를 출력
ux ps 명령어를 실행한 사용자의 프로세스를 상세히 출력
ax 모든 사용자의 프로세스를 출력
aux 모든 사용자의 프로세스를 상세하게 출력
auxww aux 옵션의 출력 결과가 화면에 잘리지 않도록 출력

 

배우는 내용 : [ su, sudo ] 

su 명령어 : 사용자 전환

암호 설정방식

$ sudo passwd root
암호설정

$ su
암호 입력

    - 작업을 완료 후 설정한 암호 삭제시 :  passwd -d root  

    - 일반 사용자로 돌아 갈고 싶을 때 :  exit 

 

sudo 방식

$ sudo su

 

 

sudo 명령어 :  명령어를 다른 사용자가 되어 실행

주로 일반 사용자로 로그인한 뒤 슈퍼 사용자로만 실행할 수 있는 명령어를 실행하기 위해 사용

sudo <실행하고 싶은 명령어>

 

sudo 를 사용할 수 있는 사용자의 목록은 /etc/sudores 라는 파일을 통해 관리

 

/etc/sudores 를 수정하고 읽는 방법

읽기

$ su -
$ cat /etc/sudoers

   - 각 항목이 <사용자> <머신이름>=(<권한>)<명령어> 와 같은 형식을 갖춤

   - <사용자> 에 %<그룹이름> 도 사용

   - ubuntu ALL=(ALL:ALL) ALL 식으로 설정 된것을 확인 가능

The first ALL is the users allowed
The second one is the hosts
The third one is the user as you are running the command
The last one is the commands allowed

 <출처: https://unix.stackexchange.com/questions/201858/what-does-all-all-all-all-mean-in-sudoers>

 ALL=(ALL:ALL) ALL 을 해석해보면     

     허가된사용자 = (host: 명령어를 사용하는 유저) 허가된 명령어

     모든 허가된 사용자 = (모든 호스트: 모든사용자) 모든 명령어허락

 

 

수정

$ sudo visudo

 

su 명령어 와 sudo 명령어

su 를 이용하여 슈퍼 사용자가 되면 exit 를 입력하기 전까지는 슈퍼사용자

sudo는 하나의 명령어만 실행하기 위한 명령어

 

슈퍼 사용자로 오랜 시간 조작을 하다보면 예기치 않게 시스템에 치명적인 손상을 가할 수 있으므로

sudo 를 사용하여 조작하는 것을 추천

배우는 내용 : [ 파일소유자 확인, 퍼미션 해석 방법, chmod: 퍼미션 설정]

파일의 소유자와 소유 그룹 확인

ls -l <파일 이름>

-rw-rw-r--  1 ubuntu ubuntu     6 Mar 21 10:58 vimPrectice.txt

- 첫 번째 ubuntu : 파일 소유자

- 두 번째 ubuntu : 파일의 소유 그룹

 

  • 현재 소속된 그룹 확인
$ groups

ubuntu ....

 

  • 파일의 퍼미션(permission)
    - 파일을 누구에게 어떤 권한을 허가할지에 대한 정보
-rw-rw-r-- 1 ubuntu ubuntu 6 Mar 21 10:58 vimPrectice.txt

   에서
   - 는 파일의 유형, ( - : 일반 파일, d : 디렉터리, l : 링크파일)
    rw-rw-r-- : 파일모드(퍼미션을 의미),  총 9글자로 구성 3글자씩 (rw-, rw-, r--)각 사용자에 대한 퍼미션을 설정함

 

코드설명

기호 의미
r 읽기 (read)
w 쓰기 (write)
x 실행 (excute)

 

rw-, rw-, r-- 설명

사용자 종류 읽기 쓰기 실행
소유자 (rw-) 허가 허가 금지
root 그룹에 소속된 사용자(rw-) 허가 허가 금지
기타 사용자(r--) 허가 금지 금지

 

디렉토리의 소유자와 소유 그룹 확인

$ ls -ld dir1

drwxr-x--- 8 ubuntu ubuntu 4096 Mar 23 05:34 dir1

 

디렉토리에서는 기호의 의미가 조금 바뀐다.

기호 의미
r 디렉터리에 포함된 파일 리스트 취득 가능
w 디렉토리의 하위파일 및 디렉터리 작성 및 삭제 가능
x 디렉터리로 이동 가능

 

rwx : 소유자는 모든 권환을 소유

r-x : root 그룹에 소속된 사용자는 w 권한 없음

--- : 기타 사용자는 아무 권한없음

 

Chmod : 파일이나 디렉터리의 퍼미션 설정

기호 모드

chmod [ugoa] [+-=] [rwx] <파일 이름>

# 유저에게 file.txt를 write 할 수 있는 권한을 부여 
$ chmod u+w file.txt

 

 

기호 내용
u 소유자
g 소유 그룹
o 기타 사용자
a ugo 모두
   
+ 퍼미션을 추가
- 퍼미션을 금지
= 지정한 퍼미션과 같게 함
  • 기호 '=' 사용 예시
    • rwxrwxrwx 일 경우
      • chmod go=r file.txt -> rwxr--r-- 로 변경

수치 모드

chmod < 8진수의 수치 > <파일 이름>

 

기호  숫자
r 4
w 2
x 1

 

예시

소유자 root 에 소속된 사용자 기타 사용자
r w x r w - r - -
4 2 1 4 2 0 4 0 0
7 6 4
chmod 764 file.txt
배우는 내용 :  배시파일로 설정 적용하기

 

배시 설정 파일

- etc/profile, ~/.profile, ~/.bashrc

  • etc/profile : 모든 사용자에게 설정을 적용할 때 기재하는 파일 
  • ~/.bashrc , ~/.profile : 사용자별로 설정을 적용할 때 기재하는 파일

배쉬가 설정 파일을 읽어 들이는 순서

  • 로그인 셸 가동 :  etc/profile  -> ~/.profile 혹은 ~/.bash_profile -> ~/.bashrc
    • ~/.profile 에서  ~/.bashrc 을 읽도록 설정된 경우가 많음
  • 비로그인 셸 가동 :  ~./bashrc

~/.bashrc 과  ~/.profile 차이

~/.bashrc 배시가 가동할 때마다 읽히는 파일 → 배시를 가동 할때 마다 설정해야하는 항목을 기재

~/.profile 로그인 할때 만 읽히는 파일 → 로그인 할때 한 번만 설정하면 되는 항목을 기재

 -- 보통은 배시가 시작될 때마다 읽혀야하기 때문에 설정을 ~/.bashrc에 함

 

배시 설정 파일을 변경할 때 주의 사항

1. 원본을 먼저 다른 이름으로 백업하기

$ cp .bashrc .bashrc.org

 

2. 설정 파일을 수정하는 셸과 예비로 가동 해두는 셸을 준비

     - 예비용은 설정할 때 잘 못 되었을 때 복원을 하기위한 용도

 

설정파일 읽기

파일 열기

$ vim ~/.bashrc

 

파일 실행

$ source ~/.bashrc

 

 

 

배우는 명령어 : [ 변수 설정 , 프롬프트 설정 ]

 

변수 설정

<변수명>=<값>

 

- 셸 변수 var1 에 값을 설정

$ var1='test variable'

$ var2 = 'test variable' # 변수에 값을 설정 할때 = 양옆에 공백으로 인해 에러 발생
'var2' 명령어를 찾을 수 없습니다.

 

- 셸 변수 var의 값을 확인

$ echo $var1
test variable

 

PS1: 프롬프트 설정

ubuntu@ip-171-11-11-11:~$ PS1='bash>' # 프롬프트를 bash> 로 변경
bash>

bash>PS1='[\u]' # 프롬프트를 [사용자 이름] 으로 표시
[ubuntu]

[ubuntu]PS1='[\u] \w \$' #프롬프트에 현재 디렉텉리 위치도 표시
[ubuntu] ~ $
[ubuntu] ~ $cd /usr/local
[ubuntu] /usr/local $cd

 

프롬프트에서 사용할 수 있는 기호

기호  내용
\d 현재 날짜 (요일, 월, 일 형식)
\h 서버의 호스트 이름
\H 서버의 도메인 이름
\n 개행문자(줄바꿈)
\t HH:MM:SS
\u 사용자 이름
\w 현재 위치의 전체 경로 표시
\W 현재 위치에서 마지막 디렉토리만 표시
\$ 현재 사용자가 root 사용자면 # , 그외에는 $ 를 표시
\\ \ 문자 자체를 표시

 

 

 

+ Recent posts