CentOS 7 使用经验分享,CentOS 7 修改开机顺序,CentOS7 采用的是systemd,centos7上systemd详解。
Unix/LinuxC技术 jackxiang 2015-2-9 09:17
一、记录CentOS 7与以往不同的地方
由于公司这一期的产品准备支持的环境有CentOS 7、MySql 5.6、Java 8、Tomcat 8等等,并且因为人员严重不足,我本月的开发任务在原有的基础上又加上了好多环境检证的工作。
因为在这次环境检证过程中遇到了不少困难,特此记录一下。
重点:记录CentOS 7与以往不同的地方
1.取消ifconfig,使用ip addr 查看IP地址。
2.使用firewalld 取代 iptables。
3.系统默认编码设置文件,由/etc/sysconfig/i18n 更改为 /etc/locale.conf
___________________________详细介绍使用感受__________________________
因为系统安装时网络连接设置的自动获取,先改成静态ip。配置方法如下:
第一步,vi /etc/sysconfig/network-scripts/ifcfg-enp0s25;
设置内容:
解释:
IPADDR0 --> ip
GATEWAY0 --> 网关
DNS1 -->DNS
第二步,重启网络服务 -->service network restart(特别重要,千万不要忘记。)
第三步.查看ip ip addr,再 ping 一下网络。这是网络配置基本就完成了。
事情进展到这里貌似也没什么难过的坎,我开始配置防火墙。先使用 iptables status 查看防火墙状态,
我去,什么鬼?我敲错了?有一次仔细核对了每一个字母,完全没错啊!!!不管怎么说,先看一下iptables脚本是否还存在吧。
咦,iptables脚本不见了。不用多想一定是CentOS 7使用了新型的防火墙,立即百度。
※度娘解惑:CentOS 7使用firewalld 取代 iptables。使用命令行工具firewalld-cmd获取firewalld状态,$ firwall-cmd --state。
摘自:http://www.linuxidc.com/Linux/2015-01/111998.htm
————————————————————————————————————————————————————————————
二、修改开机启动顺序:
http://wenku.baidu.com/link?url=HXBiVyBOB_p1oAEN0Wunreof9Fff9dy4s6abRC_Zqq6Cm1ZbOvmgXrcQ3kC3OTLmDq-FwrjeK-Fw9zgoZ3yBGGyA_ikGSRtjvhjcS_dEaQu
————————————————————————————————————————————————————————————
三、 CentOS 7 巨大变动之 systemd 取代 SysV的Init
systemd是什么
首先systmed是一个用户空间的程序,属于应用程序,不属于Linux内核范畴,Linux内核的主要特征在所有发行版中是统一的,厂商可以自由改变的是用户空间的应用程序。
Linux内核加载启动后,用户空间的第一个进程就是初始化进程,这个程序的物理文件约定位于/sbin/init,当然也可以通过传递内核参数来让内核启动指定的程序。这个进程的特点是进程号为1,代表第一个运行的用户空间进程。不同发行版采用了不同的启动程序,主要有以下几种主流选择:
(1)以Ubuntu为代表的Linux发行版采用upstart。
(2)以7.0版本之前的CentOS为代表的System V init。
(3)CentOS7.0版本的systemd。
下面是CentOS6.5和CentOS7两个版本初始化进程的信息截图。
CentOS6.5采用的是systemV init
CentOS7 采用的是systemd:
Linux内核加载启动后,用户空间的第一个进程就是初始化进程,这个程序的物理文件约定位于/sbin/init,当然也可以通过传递内核参数来让内核启动指定的程序。这个进程的特点是进程号为1,代表第一个运行的用户空间进程。不同发行版采用了不同的启动程序,主要有以下几种主流选择:
(1)以Ubuntu为代表的Linux发行版采用upstart。
(2)以7.0版本之前的CentOS为代表的System V init。
(3)CentOS7.0版本的systemd。
下面是CentOS6.5和CentOS7两个版本初始化进程的信息截图。
CentOS6.5采用的是systemV init
CentOS7 采用的是systemd
摘自:http://blog.csdn.net/smstong/article/details/39317491
参考:https://blog.linuxeye.com/400.html
=======================centos7上systemd详解============================
CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统 system 和用户 user 之分, 即:/usr/lib/systemd/system 和 /usr/lib/systemd/user
配置文件
这里我们先要说明一下unit的文件位置,一般主要有三个目录:
/lib/systemd/system
/run/systemd/system
/etc/systemd/system
这三个目录的配置文件优先级依次从低到高,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。 系统安装时,默认会将unit文件放在/lib/systemd/system目录。如果我们想要修改系统默认的配置,比如nginx.service,一般有两种方法:
在/etc/systemd/system目录下创建nginx.service文件,里面写上我们自己的配置。
在/etc/systemd/system下面创建nginx.service.d目录,在这个目录里面新建任何以.conf结尾的文件,然后写入我们自己的配置。推荐这种做法。
/run/systemd/system这个目录一般是进程在运行时动态创建unit文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即Session级别的,才在这里做修改。
服务配置
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],就以nginx为例吧,具体内容如下:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置项说明
下面分别解释下着三部分的含义
[Unit]
Description : 服务的简单描述
Documentation : 服务文档
After= : 依赖,仅当依赖的服务启动之后再启动自定义的服务单元
[Service]
Type : 启动类型simple、forking、oneshot、notify、dbus
Type=simple(默认值):systemd认为该服务将立即启动,服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求, 使用此类型启动即可。使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号,这一通知的实现由 libsystemd-daemon.so 提供
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
PIDFile : pid文件路径
ExecStartPre :启动前要做什么,上文中是测试配置文件 -t
ExecStart:启动
ExecReload:重载
ExecStop:停止
PrivateTmp:True表示给服务分配独立的临时空间
[Install]
WantedBy:服务安装的用户模式,从字面上看,就是想要使用这个服务的有是谁?上文中使用的是:multi-user.target ,就是指想要使用这个服务的目录是多用户。
每一个.target实际上是链接到我们单位文件的集合,当我们执行
systemctl enable nginx.service
就会在 /etc/systemd/system/multi-user.target.wants/ 目录下新建一个 /usr/lib/systemd/system/nginx.service 文件的链接。
systemctl status logstash.service
● logstash.service - logstash
Loaded: loaded (/etc/systemd/system/logstash.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-07-16 10:51:32 CST; 29min ago
systemctl is-enabled logstash.service
enabled
/etc/systemd/system/logstash.service
操作示例
下面是几个最常用的service操作:
# 自启动
systemctl enable nginx.service
# 禁止自启动
systemctl disable nginx.service
# 启动服务
systemctl start nginx.service
# 停止服务
systemctl stop nginx.service
# 重启服务
systemctl restart nginx.service
# 查看Unit定义文件
systemctl cat nginx.service
# 编辑Unit定义文件
systemctl edit nginx.service
# 重新加载Unit定义文件
systemctl reload nginx.service
# 列出已启动的所有unit,就是已经被加载到内存中
systemctl list-units
# 列出系统已经安装的所有unit,包括那些没有被加载到内存中的unit
systemctl list-unit-files
# 查看服务的日志
journalctl -u nginx.service # 还可以配合`-b`一起使用,只查看自本次系统启动以来的日志
# 查看所有target下的unit
systemctl list-unit-files --type=target
# 查看默认target,即默认的运行级别。对应于旧的`runlevel`命令
systemctl get-default
# 设置默认的target
systemctl set-default multi-user.target
# 查看某一target下的unit
systemctl list-dependencies multi-user.target
# 切换target,不属于新target的unit都会被停止
systemctl isolate multi-user.target
systemctl poweroff # 关机
systemctl reboot # 重启
systemctl rescue # 进入rescue模式
参考资料
create systemd unit files
NGINX systemd service file
Systemd introduction
From:https://www.xncoding.com/2016/06/07/linux/systemd.html
由于公司这一期的产品准备支持的环境有CentOS 7、MySql 5.6、Java 8、Tomcat 8等等,并且因为人员严重不足,我本月的开发任务在原有的基础上又加上了好多环境检证的工作。
因为在这次环境检证过程中遇到了不少困难,特此记录一下。
重点:记录CentOS 7与以往不同的地方
1.取消ifconfig,使用ip addr 查看IP地址。
2.使用firewalld 取代 iptables。
3.系统默认编码设置文件,由/etc/sysconfig/i18n 更改为 /etc/locale.conf
___________________________详细介绍使用感受__________________________
因为系统安装时网络连接设置的自动获取,先改成静态ip。配置方法如下:
第一步,vi /etc/sysconfig/network-scripts/ifcfg-enp0s25;
设置内容:
解释:
IPADDR0 --> ip
GATEWAY0 --> 网关
DNS1 -->DNS
第二步,重启网络服务 -->service network restart(特别重要,千万不要忘记。)
第三步.查看ip ip addr,再 ping 一下网络。这是网络配置基本就完成了。
事情进展到这里貌似也没什么难过的坎,我开始配置防火墙。先使用 iptables status 查看防火墙状态,
我去,什么鬼?我敲错了?有一次仔细核对了每一个字母,完全没错啊!!!不管怎么说,先看一下iptables脚本是否还存在吧。
咦,iptables脚本不见了。不用多想一定是CentOS 7使用了新型的防火墙,立即百度。
※度娘解惑:CentOS 7使用firewalld 取代 iptables。使用命令行工具firewalld-cmd获取firewalld状态,$ firwall-cmd --state。
摘自:http://www.linuxidc.com/Linux/2015-01/111998.htm
————————————————————————————————————————————————————————————
二、修改开机启动顺序:
http://wenku.baidu.com/link?url=HXBiVyBOB_p1oAEN0Wunreof9Fff9dy4s6abRC_Zqq6Cm1ZbOvmgXrcQ3kC3OTLmDq-FwrjeK-Fw9zgoZ3yBGGyA_ikGSRtjvhjcS_dEaQu
————————————————————————————————————————————————————————————
三、 CentOS 7 巨大变动之 systemd 取代 SysV的Init
systemd是什么
首先systmed是一个用户空间的程序,属于应用程序,不属于Linux内核范畴,Linux内核的主要特征在所有发行版中是统一的,厂商可以自由改变的是用户空间的应用程序。
Linux内核加载启动后,用户空间的第一个进程就是初始化进程,这个程序的物理文件约定位于/sbin/init,当然也可以通过传递内核参数来让内核启动指定的程序。这个进程的特点是进程号为1,代表第一个运行的用户空间进程。不同发行版采用了不同的启动程序,主要有以下几种主流选择:
(1)以Ubuntu为代表的Linux发行版采用upstart。
(2)以7.0版本之前的CentOS为代表的System V init。
(3)CentOS7.0版本的systemd。
下面是CentOS6.5和CentOS7两个版本初始化进程的信息截图。
CentOS6.5采用的是systemV init
CentOS7 采用的是systemd:
Linux内核加载启动后,用户空间的第一个进程就是初始化进程,这个程序的物理文件约定位于/sbin/init,当然也可以通过传递内核参数来让内核启动指定的程序。这个进程的特点是进程号为1,代表第一个运行的用户空间进程。不同发行版采用了不同的启动程序,主要有以下几种主流选择:
(1)以Ubuntu为代表的Linux发行版采用upstart。
(2)以7.0版本之前的CentOS为代表的System V init。
(3)CentOS7.0版本的systemd。
下面是CentOS6.5和CentOS7两个版本初始化进程的信息截图。
CentOS6.5采用的是systemV init
CentOS7 采用的是systemd
摘自:http://blog.csdn.net/smstong/article/details/39317491
参考:https://blog.linuxeye.com/400.html
=======================centos7上systemd详解============================
CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统 system 和用户 user 之分, 即:/usr/lib/systemd/system 和 /usr/lib/systemd/user
配置文件
这里我们先要说明一下unit的文件位置,一般主要有三个目录:
/lib/systemd/system
/run/systemd/system
/etc/systemd/system
这三个目录的配置文件优先级依次从低到高,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。 系统安装时,默认会将unit文件放在/lib/systemd/system目录。如果我们想要修改系统默认的配置,比如nginx.service,一般有两种方法:
在/etc/systemd/system目录下创建nginx.service文件,里面写上我们自己的配置。
在/etc/systemd/system下面创建nginx.service.d目录,在这个目录里面新建任何以.conf结尾的文件,然后写入我们自己的配置。推荐这种做法。
/run/systemd/system这个目录一般是进程在运行时动态创建unit文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即Session级别的,才在这里做修改。
服务配置
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],就以nginx为例吧,具体内容如下:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置项说明
下面分别解释下着三部分的含义
[Unit]
Description : 服务的简单描述
Documentation : 服务文档
After= : 依赖,仅当依赖的服务启动之后再启动自定义的服务单元
[Service]
Type : 启动类型simple、forking、oneshot、notify、dbus
Type=simple(默认值):systemd认为该服务将立即启动,服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求, 使用此类型启动即可。使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号,这一通知的实现由 libsystemd-daemon.so 提供
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
PIDFile : pid文件路径
ExecStartPre :启动前要做什么,上文中是测试配置文件 -t
ExecStart:启动
ExecReload:重载
ExecStop:停止
PrivateTmp:True表示给服务分配独立的临时空间
[Install]
WantedBy:服务安装的用户模式,从字面上看,就是想要使用这个服务的有是谁?上文中使用的是:multi-user.target ,就是指想要使用这个服务的目录是多用户。
每一个.target实际上是链接到我们单位文件的集合,当我们执行
systemctl enable nginx.service
就会在 /etc/systemd/system/multi-user.target.wants/ 目录下新建一个 /usr/lib/systemd/system/nginx.service 文件的链接。
systemctl status logstash.service
● logstash.service - logstash
Loaded: loaded (/etc/systemd/system/logstash.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-07-16 10:51:32 CST; 29min ago
systemctl is-enabled logstash.service
enabled
/etc/systemd/system/logstash.service
操作示例
下面是几个最常用的service操作:
# 自启动
systemctl enable nginx.service
# 禁止自启动
systemctl disable nginx.service
# 启动服务
systemctl start nginx.service
# 停止服务
systemctl stop nginx.service
# 重启服务
systemctl restart nginx.service
# 查看Unit定义文件
systemctl cat nginx.service
# 编辑Unit定义文件
systemctl edit nginx.service
# 重新加载Unit定义文件
systemctl reload nginx.service
# 列出已启动的所有unit,就是已经被加载到内存中
systemctl list-units
# 列出系统已经安装的所有unit,包括那些没有被加载到内存中的unit
systemctl list-unit-files
# 查看服务的日志
journalctl -u nginx.service # 还可以配合`-b`一起使用,只查看自本次系统启动以来的日志
# 查看所有target下的unit
systemctl list-unit-files --type=target
# 查看默认target,即默认的运行级别。对应于旧的`runlevel`命令
systemctl get-default
# 设置默认的target
systemctl set-default multi-user.target
# 查看某一target下的unit
systemctl list-dependencies multi-user.target
# 切换target,不属于新target的unit都会被停止
systemctl isolate multi-user.target
systemctl poweroff # 关机
systemctl reboot # 重启
systemctl rescue # 进入rescue模式
参考资料
create systemd unit files
NGINX systemd service file
Systemd introduction
From:https://www.xncoding.com/2016/06/07/linux/systemd.html
(转)关于信号量sem_wait的整理
Unix/LinuxC技术 jackxiang 2015-2-6 17:25
(转) linux管道与套接字的调试工具
Unix/LinuxC技术 jackxiang 2015-2-3 09:17
背景:多进程时用管道进行子进程间或子进程于线程之间通讯,出现父进程已经双close后还是出现了当有请求来时,子进程写入处理线程时管道阻塞住了,怎么办,管道调试试试看了,学习备忘下。
1)管道的调试
阅读全文
1)管道的调试
阅读全文
背景:nginx.conf里指定了nginx的error_log:error_log /data/logs/nginx/nginx_error.log; 该文件不在nginx的logs下面,于是我把这个logs文件夹都给删除了: rm -Rf /usr/local/nginx/logs,发现在启动时会会报一个alert错,nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)的研究探讨。
阅读全文
阅读全文
背景:本人的vps服务器的带宽是5M,但是经常出现很多*163data.com.cn的访问量,还经常是访问首页。
用如下命令看,还有google也来凑热闹,如下:
结果都是:
11:29:58.515423 IP (tos 0x0, ttl 121, id 43931, offset 0, flags [DF], proto 6, length: 92) 14.122.61.58.broad.sz.gd.dynamic.163data.com.cn.31292 > *.*.*.*.ssh: P 6137:6189(52) ack 1219120 win 16448
google-public-dns-a.google.com.domain > jackxiang.com.50570: [udp sum ok] 1064 q: PTR? 111.15.181.220.in-addr.arpa. 1/0/0 111.15.181.220.in-addr.arpa. PTR m15-111.126.com. (74)
都是上面的输出.
用linux下的iftop查看,随便抓两个IP在ip138.com查一下,吓一跳:
55.10.89.110.broad.pt.fj.dynamic.163data.com.cn
您查询的IP:55.10.89.110
本站主数据:美国 弗吉尼亚美国陆军部队
参考数据一:美国 弗吉尼亚美国陆军部队
185.5.43.120.broad.pt.fj.dynamic.163data.com.cn
您查询的IP:185.5.43.120
本站主数据:俄罗斯
参考数据一:RIPE
197.192.26.117.broad.pt.fj.dynamic.163data.com.cn
您查询的IP:197.192.26.117
本站主数据:埃及
参考数据一:埃及
用了百度云加速,这个没啥问题:
jackxiang.com => 183.60.235.58 1.27Mb 1.12Mb 941Kb
您查询的IP:183.60.235.58
本站主数据:广东省佛山市 百度云加速节点 电信
参考数据一:广东省深圳市 电信
——————————————————————————————————————————————————————————————
第一:是不是被攻击了?
首先163data是电信的上网导航,如果你家用的是电信宽带并且走电信的DNS,默认都会显示成163data登陆的,这个就和代理服务器差不多。
那为何有美国的IP在里面呢?我晕,难不成真有攻击黑客吗,在弗吉尼亚美国陆军部队?通过电信来到我们中国到联通的机房?纳闷。
第二:这是电信动态IP地址的反向解析名字.
广州电信做了adsl等动态ip的反向解析,要命的是,没做正向解析。
能从IP反解到IP.broad.gz.gd.dynamic.163data.com.cn
但从反IP.broad.gz.gd.dynamic.163data.com.cn却不能解析到IP。
域名都过期了,不知道电信干什么的....电信从来不会主动为用户做反解的,部分地区是收费的,并且还要看用户类型。
___________________________________________________________________________________________________
不少站长不知道163data.com.cn是什么,在搜索引擎上搜索也找不到几条满意的结果,但是每天有大量来自163data.com.cn的用户访问自己的网站,怕被采集或者被攻击,所以很着急。
我之前也不知道,后来在使用一款WordPress的插件时(装了个WordPress打分插件), 得知自己的IP地址也属于xxx.dynamic.163data.com.cn的形式。所以xxx.163data.com.cn形式的IP地址,其实 是每个中国电信上网用户的IP反向解析地址,中国电信之所以要把IP地址进行动态反向解析,主要是为了防止垃圾邮件,减少黑客攻击等等。
本页末尾的小插件显示出了您当前的IP地址和HostName(如果看不到请稍等片刻,再按F5刷新,可能需要多刷新几次),我的HostName就是xxx.broad.xw.sh.dynamic.163data.com.cn的样子。
(你也可以登录IP Chicken查看自己的IP和Name Address,我登录上去后,显示了我的IP地址,和我的Name Address: xx.xx.xx.xx.broad.xw.sh.dynamic.163data.com.cn。)
所以每天有大量来自163data.com.cn的访客访问网站不应该担心,而应该高兴,因为那都是通过电信网络上网的网友啊,呵呵。如果你屏蔽了163data.com.cn,那么所有电信用户都访问不了你的网站了。
IP地址反向解析就是服务器根据邮件信头文件显示的IP地址进行反向解析,如果反向解析这个IP所对应的域名是许可的域名,就接受这封邮件。如果反向解析发现这个IP没有对应到许可的域名,就拒接邮件。
据介绍,实施动态IP地址反向解析工作可以有效防止黑客攻击和垃圾邮件、控制网络带宽、节省DNS系统资源等,有助于减少用户投诉,净化网络环境,提升网络服务质量。
用如下命令看,还有google也来凑热闹,如下:
结果都是:
11:29:58.515423 IP (tos 0x0, ttl 121, id 43931, offset 0, flags [DF], proto 6, length: 92) 14.122.61.58.broad.sz.gd.dynamic.163data.com.cn.31292 > *.*.*.*.ssh: P 6137:6189(52) ack 1219120 win 16448
google-public-dns-a.google.com.domain > jackxiang.com.50570: [udp sum ok] 1064 q: PTR? 111.15.181.220.in-addr.arpa. 1/0/0 111.15.181.220.in-addr.arpa. PTR m15-111.126.com. (74)
都是上面的输出.
用linux下的iftop查看,随便抓两个IP在ip138.com查一下,吓一跳:
55.10.89.110.broad.pt.fj.dynamic.163data.com.cn
您查询的IP:55.10.89.110
本站主数据:美国 弗吉尼亚美国陆军部队
参考数据一:美国 弗吉尼亚美国陆军部队
185.5.43.120.broad.pt.fj.dynamic.163data.com.cn
您查询的IP:185.5.43.120
本站主数据:俄罗斯
参考数据一:RIPE
197.192.26.117.broad.pt.fj.dynamic.163data.com.cn
您查询的IP:197.192.26.117
本站主数据:埃及
参考数据一:埃及
用了百度云加速,这个没啥问题:
jackxiang.com => 183.60.235.58 1.27Mb 1.12Mb 941Kb
您查询的IP:183.60.235.58
本站主数据:广东省佛山市 百度云加速节点 电信
参考数据一:广东省深圳市 电信
——————————————————————————————————————————————————————————————
第一:是不是被攻击了?
首先163data是电信的上网导航,如果你家用的是电信宽带并且走电信的DNS,默认都会显示成163data登陆的,这个就和代理服务器差不多。
那为何有美国的IP在里面呢?我晕,难不成真有攻击黑客吗,在弗吉尼亚美国陆军部队?通过电信来到我们中国到联通的机房?纳闷。
第二:这是电信动态IP地址的反向解析名字.
广州电信做了adsl等动态ip的反向解析,要命的是,没做正向解析。
能从IP反解到IP.broad.gz.gd.dynamic.163data.com.cn
但从反IP.broad.gz.gd.dynamic.163data.com.cn却不能解析到IP。
域名都过期了,不知道电信干什么的....电信从来不会主动为用户做反解的,部分地区是收费的,并且还要看用户类型。
___________________________________________________________________________________________________
不少站长不知道163data.com.cn是什么,在搜索引擎上搜索也找不到几条满意的结果,但是每天有大量来自163data.com.cn的用户访问自己的网站,怕被采集或者被攻击,所以很着急。
我之前也不知道,后来在使用一款WordPress的插件时(装了个WordPress打分插件), 得知自己的IP地址也属于xxx.dynamic.163data.com.cn的形式。所以xxx.163data.com.cn形式的IP地址,其实 是每个中国电信上网用户的IP反向解析地址,中国电信之所以要把IP地址进行动态反向解析,主要是为了防止垃圾邮件,减少黑客攻击等等。
本页末尾的小插件显示出了您当前的IP地址和HostName(如果看不到请稍等片刻,再按F5刷新,可能需要多刷新几次),我的HostName就是xxx.broad.xw.sh.dynamic.163data.com.cn的样子。
(你也可以登录IP Chicken查看自己的IP和Name Address,我登录上去后,显示了我的IP地址,和我的Name Address: xx.xx.xx.xx.broad.xw.sh.dynamic.163data.com.cn。)
所以每天有大量来自163data.com.cn的访客访问网站不应该担心,而应该高兴,因为那都是通过电信网络上网的网友啊,呵呵。如果你屏蔽了163data.com.cn,那么所有电信用户都访问不了你的网站了。
IP地址反向解析就是服务器根据邮件信头文件显示的IP地址进行反向解析,如果反向解析这个IP所对应的域名是许可的域名,就接受这封邮件。如果反向解析发现这个IP没有对应到许可的域名,就拒接邮件。
据介绍,实施动态IP地址反向解析工作可以有效防止黑客攻击和垃圾邮件、控制网络带宽、节省DNS系统资源等,有助于减少用户投诉,净化网络环境,提升网络服务质量。
下面来罗列一下判断远端已经断开的方法:
法一:
当recv()返回值小于等于0时,socket连接断开。但是还需要判断 errno是否等于 EINTR,如果errno == EINTR 则说明recv函数是由于程序接收到信号后返回的,socket连接还是正常的,不应close掉socket连接。
法二:
struct tcp_info info;
int len=sizeof(info);
getsockopt(sock, IPPROTO_TCP, TCP_INFO, &info, (socklen_t *)&len);
if((info.tcpi_state==TCP_ESTABLISHED)) 则说明未断开 else 断开
法三:
若使用了select等系统函数,若远端断开,则select返回1,recv返回0则断开。其他注意事项同法一。
法四:
int keepAlive = 1; // 开启keepalive属性
int keepIdle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测
int keepInterval = 5; // 探测时发包的时间间隔为5 秒
int keepCount = 3; // 探测尝试的次数.如果第1次探测包就收到响应了,则后2次的不再发.
setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive));
setsockopt(rs, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle));
setsockopt(rs, SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval));
setsockopt(rs, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount));
设置后,若断开,则在使用该socket读写时立即失败,并返回ETIMEDOUT错误
法五:
自己实现一个心跳检测,一定时间内未收到自定义的心跳包则标记为已断开。
摘自:http://blog.csdn.net/god2469/article/details/8801356
使用 epoll或poll ,如何确定 与客户端的链接断开 ?
http://bbs.csdn.net/topics/240073448
epoll事件检测:
http://www.360doc.com/content/09/0812/09/1894_4858884.shtml
epoll的各个事件触发条件测试:
http://www.cppblog.com/yangsf5/archive/2009/03/12/76353.html
利用epoll和多进程解决高并发问题 :
http://blog.csdn.net/ypbsyy/article/details/38046267
法一:
当recv()返回值小于等于0时,socket连接断开。但是还需要判断 errno是否等于 EINTR,如果errno == EINTR 则说明recv函数是由于程序接收到信号后返回的,socket连接还是正常的,不应close掉socket连接。
法二:
struct tcp_info info;
int len=sizeof(info);
getsockopt(sock, IPPROTO_TCP, TCP_INFO, &info, (socklen_t *)&len);
if((info.tcpi_state==TCP_ESTABLISHED)) 则说明未断开 else 断开
法三:
若使用了select等系统函数,若远端断开,则select返回1,recv返回0则断开。其他注意事项同法一。
法四:
int keepAlive = 1; // 开启keepalive属性
int keepIdle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测
int keepInterval = 5; // 探测时发包的时间间隔为5 秒
int keepCount = 3; // 探测尝试的次数.如果第1次探测包就收到响应了,则后2次的不再发.
setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive));
setsockopt(rs, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle));
setsockopt(rs, SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval));
setsockopt(rs, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount));
设置后,若断开,则在使用该socket读写时立即失败,并返回ETIMEDOUT错误
法五:
自己实现一个心跳检测,一定时间内未收到自定义的心跳包则标记为已断开。
摘自:http://blog.csdn.net/god2469/article/details/8801356
使用 epoll或poll ,如何确定 与客户端的链接断开 ?
http://bbs.csdn.net/topics/240073448
epoll事件检测:
http://www.360doc.com/content/09/0812/09/1894_4858884.shtml
epoll的各个事件触发条件测试:
http://www.cppblog.com/yangsf5/archive/2009/03/12/76353.html
利用epoll和多进程解决高并发问题 :
http://blog.csdn.net/ypbsyy/article/details/38046267
问题:我把图片弄成了超大图标都看不到图,只是个图标,之前都不会这样,文件夹设置那里也没有在”始终显示图标,怎么办?
解决方案:
第一:
打开计算机—》组织—》文件夹和搜索选项—》查看(tab标签)—》去掉”始终显示图标,不显示缩略图”的对勾;
第二:
我的电脑 属性 高级 性能 设置 在其中的“显示缩略图,而不是显示图标”中打勾。
看看,是不是有了!哈哈。
分别摘自:
http://www.2cto.com/os/201311/254368.html
http://zhidao.baidu.com/link?url=N1BO7RyTvMJNMjX4LMlONCiyBRuEDMN-7QaMdEUSumWMW3FS13yhJysiFD3sDaOHwHK0ozit3__UPUb24v6aZq
解决方案:
第一:
打开计算机—》组织—》文件夹和搜索选项—》查看(tab标签)—》去掉”始终显示图标,不显示缩略图”的对勾;
第二:
我的电脑 属性 高级 性能 设置 在其中的“显示缩略图,而不是显示图标”中打勾。
看看,是不是有了!哈哈。
分别摘自:
http://www.2cto.com/os/201311/254368.html
http://zhidao.baidu.com/link?url=N1BO7RyTvMJNMjX4LMlONCiyBRuEDMN-7QaMdEUSumWMW3FS13yhJysiFD3sDaOHwHK0ozit3__UPUb24v6aZq
PHP配置文件PHP.ini里的session.cookie_path 与session.save_path 有什么区别
Php/Js/Shell/Go jackxiang 2015-1-30 22:30
背景:今天看自己的vps机器的PHP目录下有php -i|grep cookie_path 是session.cookie_path => / => / ,在目录:/usr/local/php/var/session 里有很多session文件,可一看配置: php -i|grep save_path session.save_path => no value => no value ,于是有一问:
___________________________________________________________________________
session.cookie_path 与session.save_path 有什么区别?
————————————————————————————
有区别
session.save_path 是保存session的路径
session.cookie_path 指定了要session会话 cookie 的有效路径 可查看setcookie第四参数关于cookie有效路径设置相关信息
session ID通过cookie传递时 .. 要创建cookie, session.cookie_path就是设置默认的cookie有效路径
平时的cookie创建如 setcookie ("Test", "12345", time()+3600, "/wwwroot/abc/", ".example.com", 1 ); "/wwwroot/abc/" 就是该cookie只在此路径下有效
由于session创建cookie并没有调用setcookie, 所以创建cookie的所需参数先在ini里的session.cookie .. 进行设置 ..
摘自:http://bbs.phpchina.com/thread-167626-1-1.html
——————————————————————————————————————————————————
后面,我把位置给修改了:
/data/session
session.save_path = "/data/session"
service php-fpm restart
Gracefully shutting down php-fpm .. done
php -i|grep session.save_path
session.save_path => /data/session => /data/session
___________________________________________________________________________
session.cookie_path 与session.save_path 有什么区别?
————————————————————————————
有区别
session.save_path 是保存session的路径
session.cookie_path 指定了要session会话 cookie 的有效路径 可查看setcookie第四参数关于cookie有效路径设置相关信息
session ID通过cookie传递时 .. 要创建cookie, session.cookie_path就是设置默认的cookie有效路径
平时的cookie创建如 setcookie ("Test", "12345", time()+3600, "/wwwroot/abc/", ".example.com", 1 ); "/wwwroot/abc/" 就是该cookie只在此路径下有效
由于session创建cookie并没有调用setcookie, 所以创建cookie的所需参数先在ini里的session.cookie .. 进行设置 ..
摘自:http://bbs.phpchina.com/thread-167626-1-1.html
——————————————————————————————————————————————————
后面,我把位置给修改了:
/data/session
session.save_path = "/data/session"
service php-fpm restart
Gracefully shutting down php-fpm .. done
php -i|grep session.save_path
session.save_path => /data/session => /data/session
背景:马云整个湖畔大学,感觉这是当年的黄埔创业军校啊,这里的人可能有林彪,但到时会不会有共党出现,说不清楚,但这说明这帮大公司的大佬们还想更大范围的拉拢一批优秀人才组成更密不通风的捆绑式战略伙伴关系,看看都是牛人面试出来的人是否真能有几个能打的,各个厂都在争夺人才,是否真能找到一有动力的白龙马驮着大公司向前走,前景未知,呵呵。
(都很能打了。。。类似大内高手。。。不过真正的独孤求败只会在山林里。。)
阅读全文
(都很能打了。。。类似大内高手。。。不过真正的独孤求败只会在山林里。。)
阅读全文
背景:如有时访问页面时因某原因,如审核没有通过,跳转到首页了,怎么办呢?初步想法是给跳转到首页后面加一个get参数说明原因也好排查问题,还中文的,其实从产品上讲应该加一个过渡页面,提示用户最好,咱就叫真一把。
点击之后在浏览器显示为:url/delete.php?id=%B9%FA%BC%CA%D0%C2%CE%C5
如何在浏览器原封不动的显示:url/delete.php?id=国际新闻
像IE就会被编码了,像Firefox就是中文显示的,呵呵,如下:
---------- 调试PHP ----------
url/delete.php?id=国际新闻
输出完成 (耗时 1 秒) - 正常终止
原因如下:
各个浏览器处理中文不一样,有的自动转换,有的不明显。你不要去改它,这样会获取它的时候造成数据不对
浏览器特性会把URL参数编码,就算可以显示中文参数传输,建议还是URL编码一下为好,以免造在不必要兼容性问题。如果URL参数传输,希望参数中不要有中文,就比如你要删除一条数据,用ID为好,谢谢!
参考:http://zhidao.baidu.com/link?url=kU3DTtVdQAspWfD9OMK891EotjPiGAkBQZV9rOxCDX9DTAGn_hkNIiA1-cX5usXwWkN_-7U7M-GrYcU1VxZVfK
点击之后在浏览器显示为:url/delete.php?id=%B9%FA%BC%CA%D0%C2%CE%C5
如何在浏览器原封不动的显示:url/delete.php?id=国际新闻
像IE就会被编码了,像Firefox就是中文显示的,呵呵,如下:
---------- 调试PHP ----------
url/delete.php?id=国际新闻
输出完成 (耗时 1 秒) - 正常终止
原因如下:
各个浏览器处理中文不一样,有的自动转换,有的不明显。你不要去改它,这样会获取它的时候造成数据不对
浏览器特性会把URL参数编码,就算可以显示中文参数传输,建议还是URL编码一下为好,以免造在不必要兼容性问题。如果URL参数传输,希望参数中不要有中文,就比如你要删除一条数据,用ID为好,谢谢!
参考:http://zhidao.baidu.com/link?url=kU3DTtVdQAspWfD9OMK891EotjPiGAkBQZV9rOxCDX9DTAGn_hkNIiA1-cX5usXwWkN_-7U7M-GrYcU1VxZVfK
Linux下如何找出一个进程的父进程的相关命令
Unix/LinuxC技术 jackxiang 2015-1-27 16:06
问题:
这个是一个进程,并且21263是21326的父进程,如果我知道某个子进程的ID号,如何找到他的父进程是哪个?
prod 21326 21263 0 02:04:41 ? 0:00 /p05/product/oracle10g/iAS/bin/httpd -d /p05/
最好是用:ps -ef --forest
-l,l long u user-oriented --sort --tty --forest --version
\_ sshd: xiangdong [priv]
| \_ sshd: xiangdong@pts/7,pts/17,pts/10,pts/14,pts/15
| \_ -bash
| | \_ su -
| | \_ -bash
| \_ -bash
| | \_ su -
| | \_ -bash
| \_ -bash
| | \_ su -
| | \_ -bash
| | \_ ps aux --forest
| \_ -bash
| | \_ su -
| | \_ -bash
| \_ -bash
| \_ su -
| \_ -bash
| \_ [httpmut: master process] H?????5?"
如nginx和php-fpm:
root 32550 1 0 2014 ? 00:00:00 nginx: master process ../sbin/nginx
www 730 32550 0 Jan26 ? 00:00:01 \_ nginx: worker process
www 731 32550 0 Jan26 ? 00:00:00 \_ nginx: worker process
www 732 32550 0 Jan26 ? 00:00:01 \_ nginx: worker process
root 6482 1 0 2014 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 6483 6482 0 2014 ? 00:05:20 \_ php-fpm: pool www
www 6484 6482 0 2014 ? 00:05:26 \_ php-fpm: pool www
和ps aux|grep nginx一样的结果。
——————————————————————————————————————————————————
方法一:
lsof好像可以:
方法二:
ps -ef|awk '$2 ~ /pid/{print $2}'
pid :子进程ID
ps -ef|awk '$2 ~ /10555/{print $2}'
方法三:
ps -ef --forest
www 10555 1 0 15:08 pts/6 00:00:00 [httpmut: worker process] H????
摘处:http://bbs.chinaunix.net/thread-1810739-1-1.html
这个是一个进程,并且21263是21326的父进程,如果我知道某个子进程的ID号,如何找到他的父进程是哪个?
prod 21326 21263 0 02:04:41 ? 0:00 /p05/product/oracle10g/iAS/bin/httpd -d /p05/
最好是用:ps -ef --forest
-l,l long u user-oriented --sort --tty --forest --version
\_ sshd: xiangdong [priv]
| \_ sshd: xiangdong@pts/7,pts/17,pts/10,pts/14,pts/15
| \_ -bash
| | \_ su -
| | \_ -bash
| \_ -bash
| | \_ su -
| | \_ -bash
| \_ -bash
| | \_ su -
| | \_ -bash
| | \_ ps aux --forest
| \_ -bash
| | \_ su -
| | \_ -bash
| \_ -bash
| \_ su -
| \_ -bash
| \_ [httpmut: master process] H?????5?"
如nginx和php-fpm:
root 32550 1 0 2014 ? 00:00:00 nginx: master process ../sbin/nginx
www 730 32550 0 Jan26 ? 00:00:01 \_ nginx: worker process
www 731 32550 0 Jan26 ? 00:00:00 \_ nginx: worker process
www 732 32550 0 Jan26 ? 00:00:01 \_ nginx: worker process
root 6482 1 0 2014 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 6483 6482 0 2014 ? 00:05:20 \_ php-fpm: pool www
www 6484 6482 0 2014 ? 00:05:26 \_ php-fpm: pool www
和ps aux|grep nginx一样的结果。
——————————————————————————————————————————————————
方法一:
lsof好像可以:
方法二:
ps -ef|awk '$2 ~ /pid/{print $2}'
pid :子进程ID
ps -ef|awk '$2 ~ /10555/{print $2}'
方法三:
ps -ef --forest
www 10555 1 0 15:08 pts/6 00:00:00 [httpmut: worker process] H????
摘处:http://bbs.chinaunix.net/thread-1810739-1-1.html
背景:三星i9000被自己拆机,把音量的向上键给整坏了,于是只有手工了,但我安的是刷机系统,好像没法进入adb reboot download的挖煤模式,但这个命令能重新启动手机。
进入挖煤模式.bat
来自:http://wenku.baidu.com/link?url=-jg1Ynv2mF6sFSvWwtaLhPyLUmaTJ6Kx8gIRrhNxDsdAXF1oh4IBEwE2keauQ-fvVwmf5CnFJcnsYhOeEUDKQW1kdbHfrJXOvaxz4e-gi_m
链接:http://sspai.com/23613
进入挖煤模式.bat
来自:http://wenku.baidu.com/link?url=-jg1Ynv2mF6sFSvWwtaLhPyLUmaTJ6Kx8gIRrhNxDsdAXF1oh4IBEwE2keauQ-fvVwmf5CnFJcnsYhOeEUDKQW1kdbHfrJXOvaxz4e-gi_m
链接:http://sspai.com/23613
nginx中deny和allow详解
deny和allow都是在access阶段
allow和deny都可以在http,server,location,limit_except中使用
如果被deny则会返回“403 Forbidden”报错信息
以下几个场景能够说明清楚这2个命令的具体是怎么用的
来自:https://blog.csdn.net/sinat_24354307/article/details/126448475
背景:单位只有一个80端口能过到测试机,如果想在测试机上再开一个非nginx的自己写的server,怎么能通过测试机做server并能通过80端口转发到这个自己写的server上呢?那就得用nginx的端口转发功能了。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
可加在server段里,也可加在 location段里,放大内网10.65.*.*/16位掩码(10.6.0.0---10.6.255.254),同理10.4.0.0/16:
proxy相关参数:
被代理加上代理IP才能访问,allow:
找到conf/nginx.conf文件,编辑:
server下的结点:
listen:监听80端口
server_name:转发到哪个地址
proxy_pass:代理到哪个地址
nginx常用命令(要进入到nginx的目录):
开启:start nginx
重启:nginx -s reload
From :http://www.cnblogs.com/wuyou/p/3455381.html
deny和allow都是在access阶段
allow和deny都可以在http,server,location,limit_except中使用
如果被deny则会返回“403 Forbidden”报错信息
以下几个场景能够说明清楚这2个命令的具体是怎么用的
来自:https://blog.csdn.net/sinat_24354307/article/details/126448475
背景:单位只有一个80端口能过到测试机,如果想在测试机上再开一个非nginx的自己写的server,怎么能通过测试机做server并能通过80端口转发到这个自己写的server上呢?那就得用nginx的端口转发功能了。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
可加在server段里,也可加在 location段里,放大内网10.65.*.*/16位掩码(10.6.0.0---10.6.255.254),同理10.4.0.0/16:
proxy相关参数:
被代理加上代理IP才能访问,allow:
找到conf/nginx.conf文件,编辑:
server下的结点:
listen:监听80端口
server_name:转发到哪个地址
proxy_pass:代理到哪个地址
nginx常用命令(要进入到nginx的目录):
开启:start nginx
重启:nginx -s reload
From :http://www.cnblogs.com/wuyou/p/3455381.html
最新的SQLite 3.8.7比3.7.17性能提升50%
Unix/LinuxC技术 jackxiang 2015-1-23 21:59
背景:sqllite这个小小的sql数据库,性能不错,尤其在Linux上的一些散型业务,完全可以用它,小巧、高效、无端口、单文件。
最新发布的SQLite 3.8.7 alpha版(下载页面http://www.sqlite.org/download.html)比16个月前发布的3.7.17版快50%。这也就是说,在相同数量的CPU指令周期里,最新版的SQLite能多做50%的工作。
性能提升的幅度要比我们进行改进时预想的结果漂亮的多。我们在不断的寻找新的方法来执行查询语句操作,并把优秀的方法新增到查询引擎中。比如,在前一版中,我用新的方法改进了IN操作,新方法要比老方法速度快5倍,这个消息我们曾在邮件列表里公布过。
这50%的提升,并不是我们有了更好的查询策略。这50%是指我们在磁盘上移动字节的速度和b-trees搜索效率。我们进行成百上千的微优化后才获得了这样的成果。这每个微优化都能让性能提升一点,比如0.05%。如果我们能一次提升0.25%,这将被认为是一次巨大的成功。所有的这些优化中现实系统中都是无法测量到的,但我们不断的积累,较少成多。
最近的一次更新后我们又有了10%的提升。我们做了很多的修改。所有的测试都通过了,我们有100%的测试覆盖率,所以,我们相信,里面不会有太多的bug。但是,你们的试用是我们质量提升的重要一部分。请下载最新的alpha版试用,让我们知道你遇到的问题。谢谢。
最新发布的SQLite 3.8.7 alpha版(下载页面http://www.sqlite.org/download.html)比16个月前发布的3.7.17版快50%。这也就是说,在相同数量的CPU指令周期里,最新版的SQLite能多做50%的工作。
性能提升的幅度要比我们进行改进时预想的结果漂亮的多。我们在不断的寻找新的方法来执行查询语句操作,并把优秀的方法新增到查询引擎中。比如,在前一版中,我用新的方法改进了IN操作,新方法要比老方法速度快5倍,这个消息我们曾在邮件列表里公布过。
这50%的提升,并不是我们有了更好的查询策略。这50%是指我们在磁盘上移动字节的速度和b-trees搜索效率。我们进行成百上千的微优化后才获得了这样的成果。这每个微优化都能让性能提升一点,比如0.05%。如果我们能一次提升0.25%,这将被认为是一次巨大的成功。所有的这些优化中现实系统中都是无法测量到的,但我们不断的积累,较少成多。
最近的一次更新后我们又有了10%的提升。我们做了很多的修改。所有的测试都通过了,我们有100%的测试覆盖率,所以,我们相信,里面不会有太多的bug。但是,你们的试用是我们质量提升的重要一部分。请下载最新的alpha版试用,让我们知道你遇到的问题。谢谢。
trace找一个进程正在使用的文件,找nginx进程正在使用的所有文件,比如日志。
Unix/LinuxC技术 jackxiang 2015-1-23 21:47
找到一个进程正在使用的所有文件,比如日志
比如找叫ttserver的进程使用的文件
查看id
pidof ttserver
ls -la /proc/`pidof ttserver`/fd/
---------------------例子--------------------
来自:http://haoningabc.iteye.com/blog/1122862
如查mysql打开了哪些文件:
ps aux|grep mysql
PID: 3005
ls -la /proc/3005/fd/
Nginx:
ps aux|grep nginx
PID: 10906
查看它打开了哪些文件:
ls -la /proc/10906/fd/
l-wx------ 1 root root 64 1月 23 21:49 35 -> /usr/local/nginx/logs/access.log
l-wx------ 1 root root 64 1月 23 21:49 4 -> /usr/local/nginx/logs/error.log
l-wx------ 1 root root 64 1月 23 21:49 6 -> /data/logs/nginx/access_svn_boosh.log
l-wx------ 1 root root 64 1月 23 21:49 7 -> /data/logs/nginx/access_jiayuanmeng.log
比如找叫ttserver的进程使用的文件
查看id
pidof ttserver
ls -la /proc/`pidof ttserver`/fd/
---------------------例子--------------------
来自:http://haoningabc.iteye.com/blog/1122862
如查mysql打开了哪些文件:
ps aux|grep mysql
PID: 3005
ls -la /proc/3005/fd/
Nginx:
ps aux|grep nginx
PID: 10906
查看它打开了哪些文件:
ls -la /proc/10906/fd/
l-wx------ 1 root root 64 1月 23 21:49 35 -> /usr/local/nginx/logs/access.log
l-wx------ 1 root root 64 1月 23 21:49 4 -> /usr/local/nginx/logs/error.log
l-wx------ 1 root root 64 1月 23 21:49 6 -> /data/logs/nginx/access_svn_boosh.log
l-wx------ 1 root root 64 1月 23 21:49 7 -> /data/logs/nginx/access_jiayuanmeng.log
Determining IP information for eth0...failed 错误解决
Unix/LinuxC技术 jackxiang 2015-1-23 15:30
背景:自己的虚拟机突然起不来了,ip没了,vmware的DHCP服务NAT服务在windows上都在,后来发现还是自己的windows下的vmware的dhcp没有启动起来,启动后好了。
问题描述:虚拟机使用wget命令上网,执行service network restart后出现如下错误
Determining IP information for eth0...failed
解决办法:
step1:修改/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTROTO=dhcp
step2:向如下三个文件中添加如下代码
(1)/etc/sysconfig/network-scripts/ifcfg-eth0
(2)/etc/sysconfig/networking/devices/ifcfg-eth0
(3)/etc/sysconfig/networking/profiles/default/ifcfg-eth0
step3:设置PC为自动获取DNS,(也有其他方法)
step4:设置虚拟机自动获取ip
step5:重启系统!(注意:有时候执行service network restart等命令还是无用的)
摘自:http://blog.csdn.net/weiqing1981127/article/details/17955843
问题描述:虚拟机使用wget命令上网,执行service network restart后出现如下错误
Determining IP information for eth0...failed
解决办法:
step1:修改/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTROTO=dhcp
step2:向如下三个文件中添加如下代码
(1)/etc/sysconfig/network-scripts/ifcfg-eth0
(2)/etc/sysconfig/networking/devices/ifcfg-eth0
(3)/etc/sysconfig/networking/profiles/default/ifcfg-eth0
step3:设置PC为自动获取DNS,(也有其他方法)
step4:设置虚拟机自动获取ip
step5:重启系统!(注意:有时候执行service network restart等命令还是无用的)
摘自:http://blog.csdn.net/weiqing1981127/article/details/17955843
背景: 有的时候可能有网络访问链路异动也会导致我们的系统出现访问超时,延迟等情况。因为检测查看到达服务器的网络路由也是很有必要的。记的有一次国外系统访问国内服务器接口,由于机房运营商调整了网络链路,导致丢包严重,影响到系统的服务质量。
mtr(my traceroute)命令相比ping和tracert及traceroute相比更加强大,而且以友好的格式化文本的形式方便我们查看到达任何一个网络节点或服务器的网络路由路径。
一个集合ping和traceroute功能并能直观显示结果的网络管理工具mtr;
官网地址
http://www.BitWizard.nl/mtr
下载地址
ftp://ftp.bitwizard.nl/mtr/
CentOS和Redhat可使用yum安装,一般系统默认已安装该工具;
实例: 查看本地服务器到baidu.com的路由路径情况:
mtr www.baidu.com
丢包率:Loss,已发送的包数:Snt,最后一个包的延时:Last,平均延时:Avg,最低延时:Best,最差延时:Wrst,方差(稳定性):StDev
local200-65.boyaa.com Snt: 3 Loss% Last Avg Best Wrst StDev
192.168.200.1 0.0% 4.5 5.0 4.3 6.3 1.1
??? 100.0 0.0 0.0 0.0 0.0 0.0
??? 100.0 0.0 0.0 0.0 0.0 0.0
121.15.179.105 0.0% 7.6 4.5 2.8 7.6 2.7
58.60.24.57 33.3% 2.6 3.9 2.6 5.1 1.7
119.145.45.245 0.0% 2.1 10.2 1.8 26.8 14.3
202.97.64.61 0.0% 25.1 26.0 24.5 28.5 2.2
202.102.73.98 0.0% 33.1 31.2 28.7 33.1 2.3
??? 100.0 0.0 0.0 0.0 0.0 0.0
180.97.32.10 0.0% 25.5 29.6 25.5 34.8 4.7
??? 100.0 0.0 0.0 0.0 0.0 0.0
180.97.33.107 0.0% 24.4 25.4 24.4 27.5 1.8
摘自:http://blog.csdn.net/fableboy/article/details/38566635
参考:http://blog.sina.com.cn/s/blog_4d8a2c970100fy1x.html
mtr(a network diagnostic tool)是一个神奇的指令,能按要求对路由中所有节点进行批量测试。简单敲一个“mtr qq.com”将会有意外收获!
当需要进行产品级的网络测试时,可在服务器上运行一段时间的mtr测试形成报告。如下脚本:
脚本会对网址列表进行1万次遍历,打印每次的丢包率和平均延时时间。网址可以随意添加,生成csv文件用Excel处理生成图表。希望对你也有用!
来自:http://www.51testing.com/html/28/116228-808230.html
mtr(my traceroute)命令相比ping和tracert及traceroute相比更加强大,而且以友好的格式化文本的形式方便我们查看到达任何一个网络节点或服务器的网络路由路径。
一个集合ping和traceroute功能并能直观显示结果的网络管理工具mtr;
官网地址
http://www.BitWizard.nl/mtr
下载地址
ftp://ftp.bitwizard.nl/mtr/
CentOS和Redhat可使用yum安装,一般系统默认已安装该工具;
实例: 查看本地服务器到baidu.com的路由路径情况:
mtr www.baidu.com
丢包率:Loss,已发送的包数:Snt,最后一个包的延时:Last,平均延时:Avg,最低延时:Best,最差延时:Wrst,方差(稳定性):StDev
local200-65.boyaa.com Snt: 3 Loss% Last Avg Best Wrst StDev
192.168.200.1 0.0% 4.5 5.0 4.3 6.3 1.1
??? 100.0 0.0 0.0 0.0 0.0 0.0
??? 100.0 0.0 0.0 0.0 0.0 0.0
121.15.179.105 0.0% 7.6 4.5 2.8 7.6 2.7
58.60.24.57 33.3% 2.6 3.9 2.6 5.1 1.7
119.145.45.245 0.0% 2.1 10.2 1.8 26.8 14.3
202.97.64.61 0.0% 25.1 26.0 24.5 28.5 2.2
202.102.73.98 0.0% 33.1 31.2 28.7 33.1 2.3
??? 100.0 0.0 0.0 0.0 0.0 0.0
180.97.32.10 0.0% 25.5 29.6 25.5 34.8 4.7
??? 100.0 0.0 0.0 0.0 0.0 0.0
180.97.33.107 0.0% 24.4 25.4 24.4 27.5 1.8
摘自:http://blog.csdn.net/fableboy/article/details/38566635
参考:http://blog.sina.com.cn/s/blog_4d8a2c970100fy1x.html
mtr(a network diagnostic tool)是一个神奇的指令,能按要求对路由中所有节点进行批量测试。简单敲一个“mtr qq.com”将会有意外收获!
当需要进行产品级的网络测试时,可在服务器上运行一段时间的mtr测试形成报告。如下脚本:
脚本会对网址列表进行1万次遍历,打印每次的丢包率和平均延时时间。网址可以随意添加,生成csv文件用Excel处理生成图表。希望对你也有用!
来自:http://www.51testing.com/html/28/116228-808230.html