시그널(Signal)의 사전적인 뜻은 '신호'라는 의미이고 리눅스에서는 프로세스끼리 서로 통신할 때 사용한다.

(리눅스 1급 마스터 정복하기 발췌)

특정 프로세스에서 다른 프로세스로 메시지를 보낼 때 시그널을 이용한다

리눅스 터미널에서는 해당 시그널에 대한 정보는 아래의 명령어로 확인이 가능하다

(vDjango) [yongyong@localhost photo]$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

CentOS7에서 실행한 시그널 목록입니다.

번호 이름 설명
1 SIGHUP  터미널에서 접속이끊길때 보내지는 시그널 
2 SIGINT

키보드로부터 오는 인터럽트 시그널:

실행 중지= [CTRL] + [c] 입력 시 보내지는 시그널

(정말 프로세스 실행중 중지할 때 많이 쓰는 ctrl+c 입력)

3 SIGQUIT

키보드로부터 오는 실행 중지 시그널 

[CTRL] + [\] 입력 시 보내지는 시그널

9 SIGKILL  프로세스 강제종료하는 시그널
15 SIGTERM  Terminate약자로 가능한 정상종료시키는 시그널 kill명령의 기본시그널
18 SIGCONT Continue 시그널로 stop시그널에의해 중지된 프로세스를 재실행할때 사용
19 SIGSTOP 터미널에서 입력된 정지시그널
20 SIGTSTP

실행 정지 후 다시 실행을 계속하기 위해 대기시키는 시그널

입력키 [CTRL] + [Z] 입력 시 보내지는 시그널

21 SIGTTIN 백그라운드에서 제어터미널 읽기

 

리눅스에서는 실제 터미널창에서 바로 출력되는 작업인 포어 그라운드와

눈에는 보이지않지만 해당프로세스를 뒤에서 실행시키는 백그라운드 방식의 2가지 프로세스 실행방법이 있다.

먼저 간단한 포어그라운드의 경우

 

[포어그라운드]

root@test# find / -name '*.txt' 2>/dev/null > list.txt

/ 루트부터 이름이 *.txt .txt라는 확장자를 가진 리스트를 찾고 > 오류값은  /dev/null값으로 보내며   에러메시지를 null값으로 하며 list.txt 파일에다가 저장해라

 

[백그라운드]

root@test# find / -name '*.txt' 2>/dev/null > list.txt &

/ 루트부터 이름이 *.txt .txt라는 확장자를 가진 리스트를 찾고 > 오류값은  /dev/null값으로 보내며  에러메시지를 null값으로 하며 list.txt 파일에다가 저장해라

 

> 출력값을 지정하는 명령어입니다,

< 입력값을 다시 지정하는 명령어입니다.

리눅스에서 명령어로 

touch select.sh 

실행후 사용자에게 실행권한 

chmod 755 select.sh 권한부여후 실행합니다.

 

 

 

#!/bin/bash
## in 다음에 나오는 값들이 항목으로 된 메뉴로 생성됨
#이 값들이 생략되면 기본값은 "$@"가된다
# 실행은 변수에 선택된 내용을 저장하고 $var 로 저장
# 이후 선택된 번호는 내장변수인 REPLY에 저장하고 "실행문장이 실행된다
# You have selected 선택한 변수값##


echo "What is your favorite singer?"
select var in "Leessang" "redvelvet" "IU" "PostMalone" "Billie Eilish" "Other"
do
  echo "Your Favorite Singer is  $var"
  break
done

 

해당스크립트 실행하면 화면에서 아래와같이 출력되구요

(vDjango) [yongyong@localhost shell_script]$ ./sele1
What is your favorite singer?
1) Leessang       3) IU             5) Billie Eilish
2) redvelvet      4) PostMalone     6) Other
#?1 (1을 입력하면)

#? 1
Your Favorite Singer is  Leessang

 

(결과값으로 출력됩니다! )

 

 

 

 

 

 

'리눅스 > 쉘스크립트' 카테고리의 다른 글

리눅스 case 문을 이용한 명령어 실행  (0) 2020.03.30

해당 스크립트 실행방법은

touch disk.test.sh  ## touch 명령어로 파일 생성후

chmod 755 disk.test.sh ### 읽고쓰고실행권한을 주는 chmod 755 명령을 실행합니다. 

./dish.test.sh

 

#!/bin/bash 

##### #!/bin/bash 를쓰는 이유는 이 쉘스크립트를 쓸떄 /bin/bash를 쓴다는 의미입니다

##### echo 사용법은 echo 출력할데이터 입니다
##### 가령  echo test 라고 명령어 검색시에는 test라는 값이 출력됩니다.
##### echo test   #실행
##### test        #test 출력

##### echo는 변수값도 출력할수 있는데 이떄는 아래와같이 실행합니다.
#####  echo $변수

#####  export test=hitest      (환경변수 지정하는 병령어)
##### ex)) echo $test #실행
##### hitest          #결과값


##### case문은 문자열과 일치하는 정규식을 찾아서 해당정규식에 있는 명령어를 실행시킵니다
#####    사용법
#####   case 문자열
#####   in
#####   정규식 1) 명령어;;
#####   정규식 2) 명령어;;
#####   esac
#####
#####
#####   사용예는 하단을 참조해주세요
#####
#####  read 명령어는 표준입력(파이프라인(|)  입력 및 키보드입력)에서 한줄씩 내용을 읽는 명령어입니다.
#####  read 명령어
#####
#####  아래 실행순서는 이렇습니다.
#####  1. echo 줄 모두 출력
##### 2. 사용자가 숫자를 입력하는것을 read명령어가 읽습니다.
##### 3. case문 작동
#####4. 1번부터 7번사이에 입력숫자를 입력시 해당 명령어 결과값 출력

echo "*********************************"

echo "**************보기****************"
echo "*1. who 2. date 3. pwd 4. ls -l  5.df -h 디스크체크 6.cpu체크  7.memory체크 *"


echo "*********************************"


echo "수행하고자 하는 명령어는? (번호를 입력하시오)"

read number;
case $number in
     1) who;;
     2) date;;
     3) pwd;;
     4) ls -l;;
     5) df -h;;
     6) cat /proc/cpuinfo;;
     7) free -m;;
     *) echo "없는 번호입니다."
esac

 

 

 

'리눅스 > 쉘스크립트' 카테고리의 다른 글

리눅스에서 쓰는 select문  (0) 2020.04.01

프로그램 설치를 위한 RPM 


rpm 


rehat package manager

레드햇에서 배포한 패키지 매니저

패키지는 명령어의 모임인개념도 있다

윈도우처럼  setup.exe 더블클릭하면 진행되는 방식


확장명은 *.rpm이고 이를 '패키지'라고 부름


파일의 의미


gedit-3.8.3-6.el7.x86_64.rpm


gedit :패키지의 이름

버전 3.8.3 주버전,부버전,패치버전

릴리즈번호 -6 문제점 개선시마다 붙여지는 번호

CentOS버전: el7-->CentOS에서 배포할 경우에 붙여짐

아키텍처: x86_64  64비트 CPU를 의미


86_64: 64비트 cpu

i386~686: 32비트 cpu

src: 소스

noarch:모든 CPU



설치 : rpm -Uvh 패키지파일이름.rpm

U: (대문자) 패키지가 설치/업그레이드

v ->설치과정의 확인

h 설치진행과정을 #마크로 화면에 출력


삭제 rpm -e 패키지 이름

이미 설치된 패키지 질의


rpm -qa 패키지 이름 패키지가 설치되엇는지 확인


rpm -qf 파일의 절대경로 

->파일이 어느 패키지에 포함된 것인지 확인


rpm =qlp 패키지파일이름.rpm

패키지 파일에 어떤 파일들이 포함되었는지 확인


rpm -qip 패키지파일이름.rpm 패키지파일의 상세정보


rpm단점 a가필요할경우 b도설치



단 삭제할 때는 


rpm -e mc mc패키지 삭제

패키지 파일이름전체가 아닌 패키지 이름만


mc가 패키지이름이면 

만약 rpm -e 패키지파일이름


rpm -e mc-4.8.7-8.el7.x86_64.rpm 

오류: mc-4.8.7-8.el7.x86_64.rpm 패키지가 설치되어 있지 않습니다



[root@localhost Packages]# rpm -e mc 

삭제 완


그후 rpm -qa mc


g



yum -y install 패키지

y안물어보고 바로 설치


yum install 패키지

yum이 rpm의 의존적인 설치들을 전부 대신해서 인터넷에 

연결하여 관련 의존성있는 패키지까지 자동설치해줌

중간에 y/n 옵션으로 예아니오 물어봄


yum remove 패키지

패키지 삭제할때 바로 됨



yum도 내부적으로는 rpm으로 깔아진다.

rpm을 직접 하는건아니지만 결국 안에서 함


rpm파일설치 yum localinstall rpm파일이름.rpm

업데이트 가능목록보기 yum check-update

yum update 패키지이름

yum remove 패키지이름

정보확인 : yum insfo


yum groupinstall "패키지 그룹설치"


기존 저장소 목록 지우기 

yum clean all 


파일유형 

-는 일반파일

d는 디렉토리

l은 링크파일(바로가기)


3개기억

파일허가권 rwx-rwx-rwx


소유자 그룹 기타사용자


chmod 777

chmod 755

chmod 655


모드를 변경 


chown blackbox.blackbox sample.txt

chown blackbox:blackbox sample.txt


권한 변경


ls -l 리스트파일 자세히 보여줌

./test

현재디렉토리에 있는파일을 직접 실행해라


chmod는 아무나 사용가능

chown은 루트만사용한다고 보면됨



일반사용자가 루트사용자 바꿀수없음 



심볼릭링크 사용가능 

chmod o-x test


모드를 바꿔라 o일반사용자 -x실행권한을 test (파일)


test 


소유주와 그룹에서 쓰기권한을 뺀다

chmod ug-w test


 

소유주와사용자에게 읽기쓰기권한을 더한다

chmod ug+rw test



심볼릭링크는 기존꺼자세히 안봐도

확실하게 할수잇음


장단점있음


윈도우 바로가기개념은 심볼릭링크 개념


원본파일이 있다.

inode 파일의 위치 크기 나 정보가잇다


원본파일 이생기면 데이터블록과 inode블록이있다


ls il basefile


basefile의 아이노드를 볼수있음

맨앞에 나오는 숫자가 아이노드


하드링크를 생성하면 하드링크파일만 하나상생되며

같은 inode1을 사용

명령 : # ln 링크대상파일이름 링크파일이름 


심볼릭 링크를 생성하면 새로운 inode2를 만들고,데이터는 원본 파일을

연결하는 효과

명령:# ln -s 링크대상파일이름 링크파일이름




vi basefile


ls -il basefile


ln basefile hardlink

ln -s basefile softlink

ls -il 


cat hardlink


cata softlink


만약 원본파일을 없애면

하드링크파일과 소프트링크파일은 어떻게 될까



원본파일은 상위로 이동하면

mv basefile ../


하드링크는 원본파일의 아이노드를 가리키므로 바로 원본데이터 접근


소프트링크심볼릭링크는원본데이터파일포인터이므로

원본이사라지면그디렉토리안에서찾을수가없기때문



mv ../basefile .


상위디렉토리의 basefile을  현재디렉토리 .으로 옮겨라



useradd myuser


'myuser'라는 유저추가


cd /etc/passwd


유저정보를 볼수있는 커맨드


tail -5 /etc/passwd


tail -5 끝에서 5줄 출력


cd /etc/group


group정보볼때 경로변경


groupadd centosGroup 


centosGroup이라는 그룹추가




useradd -g centosGroup user1

useradd -g centosGroup user2


user1을 centosGroup그룹에 추가한다



패스워드 볼려면 

tail -5 /etc/shadow




yum -y install system-config-users

시스템컨피그 유저 패키지


명령 유저 상세 볼수잇음 x윈도우에서


system-config-users

사용자 상황 볼수있음 명령


userdel -r user1 

폴더까지 삭제 명령


자주사용하는커맨드

useradd

usermod


passwd


groupadd


사용자 /etc/passwd

그룹 /etc/group




호스트 os 1번 설정
게이트웨이 겸 dns서버 2번

192.168.100(셋팅).1 호스트
2. 게이트웨이 겸 dns서버
3. DHCP서버 192.168.111.254

동적으로 IP할당해주는 서버 VM웨어에서 자동으로 제공해줌
VM웨어 서스펜드: 일시정지
일시정지동안은 하드웨어 추가 불가 파워오프 후에 해야됨



리눅스=무료유닉스
리눅스 토르발스가 버전0.01을 최초로 작성 커널부분을
1992년 버전0.02 버전을 공개하면서 시작됨
리눅스 토르발스는 커널만 개발함

배포판의 구성

GNU프로젝트

리차드스톨만에 의해 GNU프로젝트가 시작

목표는 모두가 공유할 수 있는 소프트웨어를 만드는 것

리차드 스톨만은 자유소프트웨어재단을 설립 1985년

GPL을 따름 이 라이센서는 자유소프트웨어의 수정과 공유의 자유를 보장함

프리웨어라는 개념을 넘어서 진정한 자유에 대한 개념


자유소프트웨어는 심지어 무료로 얻은 소프트웨어를 유상으로 판매할 자유도
보장

커널버전의 의미 3.17.4

3은 주버전
17은 부버전
4는 패치버전


2015년 4월 부터 커널 4.0버전을 배포하기 시작함

배포판에 포함된 기본커널을 사용자가 직접 최신의 커널로 업그레이드 할 수 잇음


http://www.kernel.org에서 최신버전을 무료로 다운로드

전세계적으로 가장 유며앟ㄴ 배포판중 하나가 레드햇 리눅스 레드햇사에서
제작한 레드햇 리눅스

사용으로 판매되는 레드햇엔터프라이즈 리눅스, 공개된 레드햇 엔터프라이즈 리눅스의 소스코드를 그대로 가져와서 로고만 변경한후 다시
컴파일 해서 만든것이 CentOS


CentOS 7을 설치하기 위한 하드웨어 요구사항
-최소요구사항-


CPU 1GHz보다 빠른 프로세서
하드디스크 여유공간
10GB이상의 여유공간 권장 (추가 설치에 따라서 달라질 수 있음)
메모리
최소 1GB(512MB도 설치 가능)

그래픽카드
최신 그래픽카드 대부분을 지원함

VMWARE를 사용할 경우에는 훨씬 높은 사양이 요구됨


이더넷이름
eno16777728

ip주소 192.168.111.128
서브넷 255.255.255.0
디폴트 라우트 192.168.111.2
DNS 192.168.111.2




수동으로 파티션 설치

디스크에 설정

/
swap 필요

80GB 에 swap 2GB 정도
swap:실제 메모리가 부족할경우 사용하는 가상메모리

실제메모리의 2배정도가 적당

/: 윈도우 비교하면 c드라이브라고 생각하면됨 비슷

/ , swap 만 우선 지정



eno16777728

ip주소 192.168.111.128
서브넷 255.255.255.0
디폴트 라우트 192.168.111.2
DNS 192.168.111.2

추가시 root 로그인 안됨


gedit /etc/pam.d/gdm-password

auth required pam_succeed_if.so user !=root quiet


자동로그인

설정 사용자 잠금해제

cd /etc/yum.repos.d
ls


su

gedit CentOS-Base.repo

update부분 삭제해야 작동안함


cd /etc/yum.repos.d
ls
CentOS-Base.repo

행포함 7dd 행포함 7번째줄까지 삭제

cd /etc/sysconfig/network-script

IPADDR=
NETMASK=
GATEWAY=
DNS1=

:wq

vi /etc/sysconfig/selinux

yum -y install bind-utills wget unzip tar

shutdown -k +15
15분후 종료한다는 메시지를 가짜로 보내서

서버를 여러명이 사용할경우 성능 저하일때 알려줌


런레벨
init명령어 뒤에 붙는 숫자를 런레벨이라고 부른다.
런레벨 0번부터 6번

0번은 파워오프 종료
1번은 복구모드 단일 사용자모드
2번이랑 4번은 사용을 안함

3번만 사용 가장 일반적인 멀티유저 모드
단 3번은 텍스트로 접속 하는 텍스트 모드

5번은 그래피컬 다중 사용자모드
x위도우가 뜸


6번은 리부트 모드

init 0 종료
init 6 복구가 됨

init 2,4번은 사용은 안함
3번처럼 멀티유저처럼 쓰임 init2, init4
두개는 같은거라고 보면된다


ls /lib/systemd/system/runlevel?.target

ls -l /lib/systemd/system/runlevel?.target

ls -l /etc/systemd/system/default.target


ln -sf 링크만드는 명령어
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target



dvd장치: /dev/cdrom
연결해제:umount
마운트할 폴더 만들기 (확인):mkdir
마운트:mount
마운트해제:umount


리눅스는 숨김속성이 파일명이나 폴더명앞에 .이붙으면 숨김파일,숨김폴더

ls -a 숨김파일 표시
ls /특정폴더경로
ls -l 자세히 보기
맨앞 - 파일
맨앞 d 폴더
ls -l 로 폴더인지 파일인지 정확히 파악 리눅스마다 틀림

ls *.cfg
ls my*
ls -al
숨김파일 자세히까지

/ 최상위 디렉토리
cd
pwd

cd ~centos
~: 물결표시는 이사용자의 홈폴더로 이동하라

상대경로
절대경로


절대경로:
/ 부터들어가는게 절대경로 ex) cd /etc/sysconfig/network-scripts

상대경로:
cd .. 상대경로 상위디렉토리 이동 현재디렉토리의 상위로
현재디렉토리 대비 경로이동을 상대경로

cd . 현재 경로,현재디렉토리

cd .


touch 크기가 0인 파일생성

rm 파일이름

물어보고 삭제

rm -f 파일이름

안물어보고 삭제


cp 파일이름 복사할파일이름

cp -r 대상디렉토리 복사할폴더이름

cp -r /etc/sysconfig .

ls sysconfig


mv
파일이름 변경 및 이동시 사용

mv myfile abcd3
myfile을 abcd3로 바꿈

mv /etc/sysconfig .
/etc/sysconfig파일을 현재디렉토리로 이동



mkdir -p dir1/dir2/dir3

rmdir 폴더
비어잇는 폴더만 삭제가능 하위폴더까진 불가

rm -r 폴더전부 삭제가능
하위까지 확인후 삭제

rm -rf 폴더
파일안물어보고 바로 삭제


텍스트파일 출력 명령어
cat
head
tail
more
less


file 명령으로 파일정보알려줌

링크파일은 바로가기기능


+ Recent posts