Linix常用命令

Posted water-wjf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linix常用命令相关的知识,希望对你有一定的参考价值。

 
1.查找某一个或多个文件:
    ls | sort | grep "2012-09-13.log"
    find -name "*2012-09-13.log"
 
2.给文件赋权限:
    chmod +x *.sh 来为bin目录下的所有.sh文件赋予可执行权限(x=1=可执行权限,r=4=可读,w=2=可写)
 
3. netstat -tnl 查看 8080 8009 这2个端口,如果打开了,证明CentOS系统的tomcat正常运行。
    tcp 0 0 :::8009 :::* LISTEN
    tcp 0 0 :::8080 :::* LISTEN
 
4.查看端口是否被占用:
    lsof -i:80 显示占用该端口的进程情况,该端口正在运行的程序
 
5.首先使用如下命令插入执行定时任务,在需要打开时去掉注释,修改内容切入按 i,退出esc,退出,强制退出!q crontab -e
    #cpu mem monitor
    sh /cuiser/cpstest.sh >> /cuiser/monitor.log  执行shell脚本内容并保存到monitor.log文件中
    下面是查看shell脚本命令以及内容
    [[email protected] cuiser]# more cpstest.sh
    cd /cuiser/
    chmod 775 *
    date
    vmstat 3 2
 
tar:
    tar -zcvf ./castomcat.tar.gz ./tomcat-6.0.35-cas2.0/      将当前目录下tomcat-6.0.35-cas2.0文件夹下所有文件打包并压缩为文件castomcat.tar.gz
    tar -ztvf ./castomcat.tar.gz            查阅上述 ./castomcat.tar.gz 文件内有哪些文件,由於使用 gzip 压缩,所以要查该 tar file 内的文件时,就得加上 z 这个参数
     tar -zxvf ./castomcat.tar.gz        解压缩,把castomcat.tar.gz解压到当前文件夹下
gzip:
     gzip -9 被压缩文件名
     gzip  catalina.out      直接压缩catalina.out到当前目录下
7z:   
    7z x yajiu.7z        这条命令是将yajiu.7z中的所有文件解压出来,x是解压到压缩包命名的目录下
cat /dev/null > catalina.out       //清空日志文件,不删除,不需要重启机器
 
 
7.向远程主机拷贝文件(提示:此处 P 是大写)
  拷贝本地的castomcat.tar.gz 到远程(192.168.18.29)的 /home/hotcity/
      scp -P36100 -r ./castomcat.tar.gz [email protected]:/home/hotcity/
     拷贝远程(10.0.24.103)的/home2/backup/ 到本地的 /home/mover00/shadow_bak/sites/
      scp -P36100 -r [email protected]:/home2/backup/ /home/mover00/shadow_bak/sites/
 
8.登陆远程主机
    ssh -p36100 192.168.18.29
 

9.tcpdump抓包

抓指定网卡(bridge100)的8085端口数据包,并输出到文件(port8085.cap):
sudo tcpdump -i bridge100 port 8085 -w port8085.cap -v
//tcpdump tcp port 8080 -n -s 0 -w /tmp/tcp.cap
tcpdump -i any -s0 port 7890 -w port7890.cap -v
-l    使标准输出变为缓冲行形式;
-n    不把网络地址转换成名字;
-c    在收到指定的包的数目后,tcpdump就会停止;
-i    指定监听的网络接口;
-w    直接将包写入文件中,并不分析和打印出来;
-s 指定记录package的大小,常见 -s 0 ,代表最大值65535,一半linux传输最小单元MTU为1500,足够了

-X 直接输出package data数据,默认不设置,只能通过-w指定文件进行输出


10. Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据, 用于检验本机各端口的网络连接情况

netstat -nat|awk ‘{print awk $NF}‘|sort|uniq -c|sort -n

11. 查看ftp进程,重启ftp server
    # path /home/hotcity/apache-ftpserver-1.0.5/res/home/files
    ps ax|grep apache-ftpserver-1.0.5
    ./stpd.sh ./res/conf/ftpd-typical.xml &    
 
12. Linux查看磁盘空间命令:
      df -hl 查看磁盘剩余空间
      df -h 查看每个根路径的分区大小
      du -sh [目录名] 返回该目录的大小
      du -sm [文件夹] 返回该文件夹总M数
   更多功能可以输入一下命令查看:
      df --help
      du --help
 
13. 防火墙
            (1) 重启后永久性生效:
  开启:chkconfig iptables on
  关闭:chkconfig iptables off
            (2) 即时生效,重启后失效:            
            service iptables status  查看防火墙状态; /etc/init.d/iptables status 会得到一系列信息,说明防火墙开着。
            service iptables stop    关闭; /etc/rc.d/init.d/iptables stop 关闭防火墙
            service iptables start    开启
            开启相关端口:
          修改/etc/sysconfig/iptables 文件,添加以下内容:
          -A RH-Firewall-1-INPUT -m state ——state NEW -m tcp -p tcp ——dport 80 -j ACCEPT
          -A RH-Firewall-1-INPUT -m state ——state NEW -m tcp -p tcp ——dport 22 -j ACCEPT
 
14. rpm
            安装程序: rpm -ivh 以.rpm结尾的程序包
            卸载:        rpm -e 程序全名,例如查看telnet程序全名:rpm -qa|grep telnet
 
 
TCP连接的KEEPALIVE
 一、关于keepalive的内核参数   
       tcp_keepalive_time - INTEGER
  在连接被标记为需要keepalive后,最后数据被发送和第一个keepalive探测包的间隔.
  默认值: 2hours.
  tcp_keepalive_probes - INTEGER
  在决定连接被断掉,通知应用层前,发送keepalive探测包的次数.
  默认值: 9.
  tcp_keepalive_intvl - INTEGER
  在keepalive探测包开始后,探测包每隔多长时间发送一次.
  默认值: 75s
  根据上述参数来看,如果一个client发送一个标记为keepalive的包后,如果断开了
       服务端需要7200s+9*75s=7875s后,连接才释放掉。
二、   TIME_WAIT 的处理
  根据TCP协议,主动发起关闭的一方,会进入TIME_WAIT状态(TCP实现必须可靠地终止连接的两个方向(全双工关闭)),持续2*MSL(Max Segment Lifetime),缺省为240秒. 为什么 TIME_WAIT 状态需要保持 2MSL 这么长的时间?
 
  TIME_WAIT的等待时间为2MSL,即最大段生存时间.如果 TIME_WAIT 状态保持时间不足够长(比如小于2MSL),第一个连接就正常终止了。第二个拥有相同相关五元组的连接出现(因为连接终止前发起的一方可能需要重发 ACK,所以停留在该状态的时间必须为MSL的2倍。),而第一个连接的重复报文到达,干扰了第二个连接。TCP实现必须防止某个连接的重复报文在连接终 止后出现,所以让TIME_WAIT态保持时间足够长(2MSL),连接相应方向上的TCP报文要么完全响应完毕,要么被丢弃。建立第二个连接的时候,不 会混淆。
 
  注:MSL(最大分段生存期)指明TCP报文在Internet上最长生存时间,每个具体的TCP实现都必须选择一个确定的MSL值。RFC 1122建议是2分钟,但BSD传统实现采用了30秒。TIME_WAIT 状态最大保持时间是2 * MSL,也就是1-4分钟。
 
  有关内核级别的keepalive和time_wait的优化调整
 
vi /etc/sysctl
 
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_fin_timeout = 30
net.core.netdev_max_backlog =8096
 
修改完记的使用sysctl -p 让它生效
 
以上参数的注解
/proc/sys/net/ipv4/tcp_tw_reuse
该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。
 
/proc/sys/net/ipv4/tcp_tw_recycle
recyse是加速TIME-WAIT sockets回收
 
  对tcp_tw_reuse和tcp_tw_recycle的修改,可能会出现.warning, got duplicate tcp line warning, got BOGUS tcp line.上面这二个参数指的是存在这两个完全一样的TCP连接,这会发生在一个连接被迅速的断开并且重新连接的情况,而且使用的端口和地址相同。但基本 上这样的事情不会发生,无论如何,使能上述设置会增加重现机会。这个提示不会有人和危害,而且也不会降低系统性能,目前正在进行工作
 
/proc/sys/net/ipv4/tcp_keepalive_time
表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时
 
/proc/sys/net/ipv4/tcp_fin_timeout 最佳值和BSD一样为30
fin_wait1状态是在发起端主动要求关闭tcp连接,并且主动发送fin以后,等待接收端回复ack时候的状态。对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
 
/proc/sys/net/core/netdev_max_backlog
该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 
 
三、 进行处理
Linux系统中TCP是面向连接的,在实际应用中通常都需要检测连接是否还可用.如果不可用,可分为:
  a. 连接的对端正常关闭.
  b. 连接的对端非正常关闭,这包括对端设备掉电,程序崩溃,网络被中断等.这种情况是不能也无法通知对端的,所以连接会一直存在,浪费国家的资源.
TCP协议栈有个keepalive的属性,可以主动探测socket是否可用,不过这个属性的默认值很大.
全局设置可更改/etc/sysctl.conf,加上:
net.ipv4.tcp_keepalive_intvl = 20
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 60
 
在程序中设置如下:
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));
 
 
 

以上是关于Linix常用命令的主要内容,如果未能解决你的问题,请参考以下文章

Linix基本操作和安装基本软件

Linix基本命令

linix命令

ubuntu 用啥命令访问共享文件夹

Hexo常用命令

Shell脚本常用命令