邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

关于nginx启动、停止、重启命令总结

nginx启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

nginx停止
1.从容停止
ps aux|grep nginx //master进程号,例如是 1480
kill -QUIT 1480
2.快速停止
kill -TERM 1480 或 kill INT 1480
3.强制停止
pkill -9 nginx 或 killall nginx

nginx重启
检测配置文件是否正确
nginx -t 
然后
nginx -s reload 或者 kill -HUP 1480
linux下通过postfix发送邮件以及shell监控报警脚本
postfix安装

首先查看本机有没有安装 sendmail 
rpm -qa|grep sendmail 或者 alternatives --display mta
如果存在则删除或者停止
yum remove sendmail

安装postfix
yum -y install postfix*
vim /etc/postfix/main.cf
修改
myhostname = mail.flycoder.cn
mydomain = flycoder.cn
myorigin = $mydomain
inet_protocols = ipv4

启动服务
service postfix restart
chkconfig postfix on 
alternatives --set mta /usr/sbin/sendmail.postfix 或者 alternatives --config mta  选择对应的/usr/sbin/sendmail.postfix

测试邮件
echo 'Hello world!' | mail -s 'Test Email' youremail@domain.com

监控脚本

nginx监控脚本,php mysql redis和此类似
vim nginx.sh
#!/bin/bash
#nginx.sh
nc -w2 localhost 80
if [ $? -ne 0 ]
then
        echo 'Nginx is down' | mail -s 'Nginx is down' youremail@domain.com
        /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
fi

disk监控脚本
vim dish.sh  
#!/bin/bash
#disk.sh awk后面的具体跟随自身服务器显示的内容来写
num=`df |awk 'NR==2{print int($5)}'`
if [ $num -gt 80 ]
then
        echo "disk space is ${num}%" | mail -s 'disk space > 80' youremail@domain.com
fi

shell脚本下执行sql语句

vim mysql.sh

#!/bin/bash 

host='127.0.0.1'
user='root'
passwd='root'
dbname='test'
test_sql='select count(*) from test'
num=$(mysql -s -h$host -u$user -p$passwd $dbname -e "$test_sql")
echo $num

php-fpm重启、启动、停止命令
启动php-fpm:
/usr/local/php/sbin/php-fpm

php-fpm需要使用信号控制,master进程可以理解以下信号
INT, TERM 立刻终止
QUIT     平滑终止
USR1     重新打开日志文件
USR2     平滑重载所有worker进程并重新载入配置和二进制模块

重启方法1
先查看php-fpm的master进程号
ps aux|grep php-fpm
然后
kill -USR2 进程号
重启方法2
cat /usr/local/php/etc/php-fpm.conf
找到对应的php-fpm.pid
kill -USR2 'cat /usr/local/php/var/run/php-fpm.pid'


关闭
kill INT 'cat /usr/local/php/var/run/php-fpm.pid'

使用shell脚本每秒执行一次php程序


vim test.sh

#!/bin/bash

step=1 #间隔的秒数,不能大于60
 for (( i = 0; i < 60; i=(i+step) )); do
         $(/work/software/php/bin/php  '/work/www/live/test.php')
             sleep $step
         done
         exit 0



windows下把redis加入服务

加入服务,开机自启动
redis-server.exe --service-install redis.windows.conf

启动
redis-server.exe --service-start
停止
redis-server.exe --service-stop
卸载
redis-server.exe --service-uninstall

安装多个实例
redis-server.exe --service-install –service-name redisService1 –port 10001
redis-server.exe --service-start –service-name redisService1
redis-server.exe --service-install –service-name redisService2 –port 10002
redis-server.exe --service-start –service-name redisService2
redis-server.exe --service-install –service-name redisService3 –port 10003
redis-server.exe --service-start –service-name redisService3

了解 Linux中Buffer和Cache

Buffer和Cache的区别 buffer与cache操作的对象就不一样。

buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。
 
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。

简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。 buffer是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。


cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计的,也就是平常见到的一级缓存、二级缓存、三级缓存。 cpu在执行程序所用的指令和读数据都是针对内存的,也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换的速度,在cpu和内存之间增加了cache,它的速度比内存快,但是造价高,又由于在cpu内不能集成太多集成电路,所以一般cache比较小,以后intel等公司为了进一步提高速度,又增加了二级cache,甚至三级cache,它是根据程序的局部性原理而设计的,就是cpu执行的指令和访问的数据往往在集中的某一块,所以把这块内容放入cache后,cpu就不用在访问内存了,这就提高了访问速度。当然若cache中没有cpu所需要的内容,还是要访问内存的。

cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提高系统性能。
关于nginx的master和worker进程模型

关于nginx的master和worker进程模型

正常执行中的nginx会有多个进程,最基本的有master process(监控进程,也叫做主进程)和woker process(工作进程),还可能有cache相关进程。

master进程

监控进程充当整个进程组与用户的交互接口,同时对进程进行监护。它不需要处理网络事件,不负责业务的执行,只会通过管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。

worker进程

worker进程的主要任务是完成具体的任务逻辑。其主要关注点是与客户端或后端真实服务器(此时nginx作为中间代理)之间的数据可读/可写等I/O交互事件,所以工作进程的阻塞点是在像select()、epoll_wait()等这样的I/O多路复用函数调用处,以等待发生数据可读/写事件。当然也可能被新收到的进程信号中断。

原文具体链接:http://www.tuicool.com/articles/NNZvquV


优惠券
最新微语