Linux 의 Shell 스 크 립 트 - Nginx 설치 및 서비스, 모니터링
7062 단어 LinuxshellLinux -- Shell 스 크 립 트
-n 포트 번 호 를 디지털 형식 으로 표시 합 니 다. -t TCP 연결 포트 보이 기 -u UDP 연결 포트 보이 기 -l 서비스 가 감청 하고 있 는 포트 정 보 를 표시 합 니 다. 예 를 들 어 httpd 가 시작 되면 80 포트 를 계속 감청 합 니 다. -p 감청 포트 의 서비스 이름 이 무엇 인지 표시 합 니 다 (즉 프로그램 이름)
일반적인 사용 방법: netstat - ntulp | grep 서비스 이름 검색 할 수 있다 면 이 서비스 가 시작 되 었 다 는 것 을 설명 한다.
nginx
한 사이트 서버 는 아파 치 http 와 같은 80 포트 를 사용 하기 때문에 한 번 에 하나만 사용 할 수 있 고 한 번 에 다른 하 나 를 열 면 꺼 야 합 니 다.
원본 컴 파일 설치 가 필요 합 니 다. 컴 파일 설치 전에 네 개의 소프트웨어 를 준비 해 야 합 니 다: gcc, make, openssl - devel, pcre - devel 기본 디 렉 터 리 와 프로그램 위치
/usr/local/nginx/conf
파일 디 렉 터 리 설정
/usr/local/nginx/html
사이트 페이지 디 렉 터 리
/usr/local/nginx/logs
Nginx 로그 디 렉 터 리
/usr/local/nginx/sbin
주 프로그램 디 렉 터 리
/usr/local/nginx/sbin/nginx
시작 서비스
/usr/local/nginx/sbin/nginx -s stop
서비스 닫 기
/usr/local/nginx/sbin/nginx -V
소프트웨어 정보 보기
시스템 모니터링 명령
uptime
CPU 부하 상황 을 살 펴 보면 마지막 세 개의 숫자 는 현재 CPU 부하 백분율, 5 분 동안 평균 부하, 15 분 평균 부하 입 니 다.
ifconfig
'RX packets' 는 다운로드 한 패 킷 크기 (바이트)' TX packets' 는 업 로드 된 패 킷 크기 를 말 합 니 다.
free
'Mem' 뒤에 메모리 의 총량, 사용량, 잉여 량...
df
'/' 끝 줄 에서 시스템 디스크 와 관련 된 데 이 터 를 말 합 니 다.
rpm -qa
설 치 된 패키지 의 개 수 를 검색 합 니 다.
구체 적 인 실제 사용 은 뒤의 '서버 운행 지표 실시 간 모니터링' 을 본다.
yum 패키지 설치 현황 보기
[ $(yum repolist | awk '/repolist/{print$2}' | sed 's/,//') -eq 0 ] && echo 'your yum has problem' && exit 2 || echo 'your yum is OK'
패 킷 은 읽 기 쉬 운 바이트 수가 읽 을 수 있 는 데이터 단위 로 출력 되 지 않 습 니 다.
printf(){
all=''
a=${1:-0}
if [ $a -gt 1024 ];then
k=$[a/1024]
if [ $k -gt 1024 ];then
m=$[k/1024]
if [ $m -gt 1024 ];then
g=$[m/1024]
all=${g}'G '
m=$[m%1024]
fi
all=${all}${m}'M '
k=$[k%1024]
fi
all=${all}${k}'K '
a=$[a%1024]
fi
all=${all}$a'b'
echo $all
}
nginx 의 원 마 컴 파일 설치 패 키 지 는 블 로그 자원 라 이브 러 리 에 Nginx. zip 에 두 가지 버 전의 Nginx 소프트웨어 가 있 습 니 다. 아래 스 크 립 트 는 기본적으로 nginx - 1.12.2 입 니 다.
#!/bin/bash
jindu(){
while :
do
echo -n '#'
sleep 0.1
done
}
# check yum
[ $(yum repolist | awk '/repolist/{print$2}' | sed 's/,//') -eq 0 ] && echo 'your yum has problem' && exit 2
jindu &
for i in gcc make openssl-devel pcre-devel
do
rpm -q $i &>/dev/null
if [ $? -ne 0 ];then
yum install -y $i &>/dev/null
fi
done
echo -e "
"'gcc,make,openssl-devel,pcre-devel is ready'
# check nginx.tar
file=${1:-nginx-1.12.2.tar.gz}
if [ -f $file ];then
tar -xf $file -C .
else
kill $!
echo -e
'Cannot found '$file" you can try to use \'nginx_install file\' "
exit 3
fi
echo -e
'nginx is making install..'
cd nginx-1.12.2
./configure &>/dev/null
make &>/dev/null
make install &>/dev/null
# check nginx
[ ! -e /usr/local/nginx ] && kill $! && echo -e "
nginx has problem" && exit 1
kill $!
echo -e "
nginx is ready"
exit 0
nginx 서버 서비스 시작 관련 스 크 립 트 닫 기
#!/bin/bash
start(){
# check httpd
systemctl status httpd &>/dev/null
[ $? -eq 0 ] && systemctl stop httpd && echo if you want to start ngix you have to stop apache || echo 'port 80 is ready'
# apache ,
[ $? -ne 0 ] && echo 'your httpd cannot be stopped' && exit 1
#check nginx and start
netstat -ntlup | grep -q nginx
[ $? -ne 0 ] && /usr/local/nginx/sbin/nginx
status
}
stop(){
# stop nginx
netstat -ntlup | grep -q nginx
[ $? -eq 0 ] && /usr/local/nginx/sbin/nginx -s stop
#check nginx
netstat -ntlup | grep -q nginx
if [ $? -eq 0 ];then
echo -e "server nginx stop -------------------[\033[31mfalse\033[0m]"
exit 2
else
echo -e "server nginx stop -------------------[\033[32mOK\033[0m]"
fi
}
status(){
#check nginx
netstat -ntlup | grep -q nginx
if [ $? -ne 0 ];then
echo -e "server nginx is ---------------------[\033[31mfalse\033[0m]"
exit 3
else
echo -e "server nginx is ---------------------[\033[32mOK\033[0m]"
fi
}
# choice , ,
choice=${1:-0}
case $choice in
start)
start ;;
stop)
stop ;;
restart)
stop &>/dev/null
start ;;
status)
status ;;
*)
echo 'you can try nginx_server start|stop|restart|status'
esac
서버 운행 지표 실시 간 모니터링
#!/bin/bash
# change to echo readable
printf(){
all=''
a=${1:-0}
if [ $a -gt 1024 ];then
k=$[a/1024]
if [ $k -gt 1024 ];then
m=$[k/1024]
if [ $m -gt 1024 ];then
g=$[m/1024]
all=${g}'G '
m=$[m%1024]
fi
all=${all}${m}'M '
k=$[k%1024]
fi
all=${all}${k}'K '
a=$[a%1024]
fi
all=${all}$a'b'
echo $all
}
while :
do
# CPU
now_CPU=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`
all_CPU=`uptime | awk '{print $NF}'`
#
ifcon_r=`ifconfig eth0 | awk '/RX p/{print $5}'`
ifcon_t=`ifconfig eth0 | awk '/TX p/{print $5}'`
#
mem=`free | awk '/Mem/{print $4}'`
#
devepment=`df | awk '/\/$/{print $4}'`
#
user=`cat /etc/passwd | wc -l`
#
loginnum=`who | wc -l`
#
ps=`ps aux | wc -l`
#
repolis=`rpm -qa | wc -l`
clear
echo -e 'CPU :'"\t\t"$now_CPU
echo -e 'CPU :'"\t\t"$all_CPU
echo -en ' :'"\t"
printf $ifcon_r
echo -en ' :'"\t"
printf $ifcon_t
echo -en ' :'"\t\t"
printf $mem
echo -en ' :'"\t\t"
printf $devepment
echo -e ' :'"\t"$user
echo -e ' :'"\t"$loginnum
echo -e ' :'"\t"$ps
echo -e ' :'"\t"$repolis
sleep 0.5
done
원 격 로그 인 안전 모니터링
#!/bin/bash
num=3
while :
do
for i in `awk '/Invalid user/{IP[$10]++}END{for(i in IP){print i,IP[i]}}' /var/log/secure | awk '$2>'$num'{print $2}'`
do
echo 'this IP '$i' try to ssh ,but its username is wrong too many times' | mail -s root
done
for i in `awk '/Failed password/{IP[$11]++}END{for(i in IP){print i,IP[i]}}' /var/log/secure | awk '$2>'$num'{print $2}'`
do
echo 'this IP '$i' try to ssh ,but its passwd is wrong too many times' | mail -s root
done
sleep 5s
done
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.