分类 【操作系统】 下的文章

Linux使用netstat命令查看并发连接数

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

解释:

返回结果示例:

LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30

ESTABLISHED 1597 (正常数据传输状态)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)

状态:描述

CLOSED:无连接是活动的或正在进行

LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

如果只是想查看当前并发的连接数,可以使用以下命令:

netstat -nat|grep ESTABLISHED|wc -l

bash递归检查文件中是否包含IP地址

检查项目组提交的代码以及配置文件中,是否包含写死IP地址的情况

#!/bin/bash

regex_ip="(2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[1-9]?[0-9])(\.(2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[1-9]?[0-9])){3}"
if [ ! -n "$1" ] ;then  
    echo "Usage:check_ip.sh [CHECK_PATH]"  
else  
    grep -rE "$regex_ip" $1
fi  

windows上自动设置java环境变量的脚本

@echo off

:: TODO:设置java环境变量
:: Author: Gwt
color 02
::设置java的安装路径,可方便切换不同的版本
set input=
set /p "input=请输入java的jdk路径(或回车默认路径为C:\Program Files\Java\jdk1.7.0_71):"
if defined input (echo jdk已设置) else (set input=C:\Program Files\Java\jdk1.7.0_71)
echo jdk路径为%input%
set javaPath=%input%

::如果有的话,先删除JAVA_HOME
wmic ENVIRONMENT where "name='JAVA_HOME'" delete

::如果有的话,先删除ClASS_PATH 
wmic ENVIRONMENT where "name='CLASS_PATH'" delete

::创建JAVA_HOME
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%javaPath%"

::创建CLASS_PATH
wmic ENVIRONMENT create name="CLASS_PATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%

%JAVA_HOME%%\lib\dt.jar;"

::在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串
call set xx=%Path%;%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin

::echo %xx%

::将返回显的字符重新赋值到path中
wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%xx%"

pause

解释下命令

   @echo off 是关闭回显的,不会显示命令信息 on打开会显示命令信息

  color 02是设置输出文本颜色的,这里是控制命令台输出绿颜色

  set /p "input=请输入命令信息" 是用来接收控制台输入的文本信息的

  if else 是用来做判断 if defined input 是用来判断用户是否输入信息,回车的话,则表示未定义input的值

  echo "输出信息" 是用来显示信息的

  set javaPath=%input% 是用来吧变量input的值赋值给javaPath变量的

  wmic 是提供了批处理的命令,可以方便的操作环境变量值

  删除某一环境变量 就使用 wmic ENVIRONMENT where "name='JAVA_HOME'" delete命令

  创建某一环境变量 使用 wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%javaPath%"命令

      修改某一环境变量 使用 wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="value"

注意事项:

  1、在上述批处理脚本命令中,要严格注意空格和大小写等的输入,不然执行不成功的

  2、要以管理员方式运行命令,不然提示拒绝执行命令的提示

解决MacOS下readlink: illegal option -- f

Mac下的readlink没有-f参数,诸如screenfetch又会去调用readlink -f,于是每次都会出现:

readlink: illegal option -- f
usage: readlink [-n] [file ...]

很是烦人,解决方案如下:
1.安装coreutils:

brew install coreutils

2.设置环境变量,编辑~/.bash_profile,添加:

export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

3.创建别名,使用greadlink替代readlink,同样是编辑~/.bash_profile,添加:

alias readlink=greadlink

centos 6.x 配置iptables

#!/bin/bash
#清除现有所有规则
iptables -F
iptables -X
iptables -Z

#允许icmp包进入
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
#允许本地的数据包
iptables -A INPUT -s localhost -d localhost -j ACCEPT
#允许已经建立和相关的数据包进入
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许icmp包出去
iptables -A OUTPUT -p icmp --icmp any -j ACCEPT
 #允许本地数据包
iptables -A OUTPUT -s localhost -d localhost -j ACCEPT
#允许已经建立和相关的数据包出去
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许ESTABLISHED和RELATED状态的包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#允许有限的ping功能,每秒10次
iptables -A INPUT -p icmp -m limit --limit 10/sec -j ACCEPT

#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT

# 允许访问22端口,ssh使用
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许访问8888端口,ss使用
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT

#允许访问80,443端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

service iptables save

如果保持失败,是因为缺少policycoreutils,请先安装

yum -y install policycoreutils

将iptables加入随机启动

chkconfig --level 345 iptables on

查看已有规则

iptables -L -n --line-numbe