我的Linux常用命令
2012年12月04日


查看linux性能

top命令


查看进程/杀死进程

ps -ef |grep tomcat

ps -ef |grep nodeagent

sudo -u was7 kill xxx

kill -9 [+pid]例如:kill -9 1100

pid就是进程名字后面的那个数字,比如

adap 1100 ………………

nodeagent 1230……


查看所有运行中的进程

ps aux | less


查看端口号占用

netstat -ntlp

netstat -ntlp|grep -E '2181|9092'

netstat参数说明:

-n:默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

-t和-u,使用 -t 选项列出 TCP 协议的连接,-u为UDP连接。

-l:使用 -l 选项列出正在监听的套接字。不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

-p:使用 -p 选项查看进程信息。

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

-e:显示用户名(id)

使用 -ep 选项可以同时查看进程名和用户名。注意:假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

-s:netstat 可以打印出网络统计数据,包括某个协议下的收发包数量。例如:

netstat -st

netstat -su

-i:输出网络接口(网卡)的信息,包括收发包的数据量。

netstat -ie:将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息(等价于ifconfig)。

-c:使用 netstat 的 -c 选项持续输出信息。例如:netstat -c

使用案例:

active 状态的套接字连接用 "ESTABLISHED" 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:

netstat -atnp | grep ESTA

配合 watch 命令监视 active 状态的连接:

watch -d -n0 "netstat -atnp | grep ESTA"


查看虚拟IP(VIP)信息

命令:ip addr

如下橙色字体的是vip

[root@fm-nginx2 ~]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host 

       valid_lft forever preferred_lft forever

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:50:56:8a:29:81 brd ff:ff:ff:ff:ff:ff

    inet 10.1.10.81/23 brd 10.1.11.255 scope global eth1

    inet 10.1.10.200/32 scope global eth1

    inet 10.1.10.201/32 scope global eth1

    inet 10.1.10.206/32 scope global eth1

    inet 10.1.10.207/32 scope global eth1

    inet 10.1.10.208/32 scope global eth1

    inet 10.1.10.211/32 scope global eth1

    inet 10.1.10.209/32 scope global eth1

    inet 10.1.10.210/32 scope global eth1

    inet6 fe80::250:56ff:fe8a:2981/64 scope link 

       valid_lft forever preferred_lft forever

[root@fm-nginx2 ~]# ifconfig

eth1      Link encap:Ethernet  HWaddr 00:50:56:8A:29:81  

          inet addr:10.1.10.81  Bcast:10.1.11.255  Mask:255.255.254.0

          inet6 addr: fe80::250:56ff:fe8a:2981/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:113714974 errors:0 dropped:0 overruns:0 frame:0

          TX packets:122017323 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:36959662327 (34.4 GiB)  TX bytes:29665843948 (27.6 GiB)

参考资料:http://blog.csdn.net/u010028869/article/details/50574907


查看Linux是否为64位、以及Linux的系统版本

查看操作系统,执行指令:
    uname -a
结里有x86_64等字样,则说明是64位,这是软件判断法。

CPU否支持64位
    cat /proc/cpuinfo
其flag里发现cpu特性有lm , ia64 或者amd64 ,则表示CPU的硬件是64位。 

版本查看:
     lsb_release -a
信息如下:
LSB Version: :core-4.0- amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.3 (Santiago)
Release: 6.3
Codename: Santiago


查看软件的安装位置 

方法一:dpkg -L firefox 
方法二: 
cd /usr/bin 
ls -l firefox 

卸载软件
最简单办法是,当我们知道软件的名称,那么我们就直接在终端命令窗口中输入命令就可以了:
sudo apt-get remove --purge google-chrome-unstable

--purge 选项表示彻底删除改软件和相关文件

Linux干净地卸载软件:

sudo apt-get remove --purge 软件名称

然后

sudo apt-get autoremove

sudo apt-get clean


如何安装*.dep软件包?


用dpkg命令,详细用法可以dpkg --help

dpkg 安装软件 依赖包的问题:

运行一下这个命令解决: sudo apt-get -f install


Linux查看端口号占用情况

netstat -anp | grep LISTEN | grep -v LISTENING

其中grep -v是排除匹配内容的意思


查看linux系统的总内存

cat /proc/meminfo | grep MemTotal


linux 查看文件md5和SHA1

命令+文件名,例如:

md5sum  VirtualBox-4.3.0-89960-Win.exe

sha1sum  VirtualBox-4.3.0-89960-Win.exe


26、生成SSH密匙:ssh-keygen

zollty@zollty-ubuntu:~/0sync/0work/git$ ssh-keygen -t rsa -C "zollty@abc.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zollty/.ssh/id_rsa): 
/home/zollty/.ssh/id_rsa already exists.
Overwrite (y/n)? n

zollty@zollty-ubuntu:~/0sync/0work/git$ ssh-keygen -t rsa -C "zollty@abc.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zollty/.ssh/id_rsa): zbjla
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in zbjla.
Your public key has been saved in zbjla.pub.
The key fingerprint is:
86:60:d9:d4:68:58:3e:45:11:8d:c3:62:1c:ca:ff:7d zollty@abc.com
The key's randomart image is:
+--[ RSA 2048]----+
|     ++*==       |
|   ..**.= .      |
|    *o+. .       |
|   . o o         |
|      o S        |
|       o .       |
|        . . E    |
|           .     |
|                 |
+-----------------+

zollty@zollty-ubuntu:~/0sync/0work/git$ ssh-keygen -t rsa -C "zollty@abc.com"

Generating public/private rsa key pair.

Enter file in which to save the key (/home/zollty/.ssh/id_rsa): zbjla

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in zbjla.

Your public key has been saved in zbjla.pub.

生成之后要执行ssh-add才生效:

例如:

ssh-add   ~/.ssh/id_rsa 

ssh-add /home/zollty/0sync/0work/git/zbjla


27、linux 下载远程服务器上的文本文件到本地

命令如下:

ssh work@192.168.143.28 'cat /data/jetty/logs/2016_01_02.stderrout.log' >> /home/zollty/workspace/log.txt


28、Linux ssh登录命令

不指定用户:

    ssh 192.168.0.11

指定用户:

    ssh -l root 192.168.0.11

    ssh root@192.168.0.11

如果修改过ssh登录端口的可以:

    ssh -p 12333 192.168.0.11

    ssh -l root -p 12333 216.230.230.114

    ssh -p 12333 root@216.230.230.114


添加用户的命令

adduser username

例如:

adduser test

然后根据提示输入密码,之后一直回车就行了。


修改密码:

echo tomcat:tomcat | chpasswd


用户权限(归属)

chown -R username:usergroup /opt/tomcat

chown -R test:test test.txt

说明:改变某个文件的所有者和所属的组,可以使用命令chown,参数R必须是大写

 每个Linux文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-),无权限(-)不做讨论。利用ls -l、ls -ld命令可以看到某个文件、目录的权限,它以显示数据的第一个字段为准。第一个字段由10个字符组成,如下:

    [root@localhost /]#ls -l test.txt

    -rw-r--r-- 1 root root 91 may 7 20:21 test.txt

    第一位表示文件类型,-表示文件,d表示目录;后面每三位为一组。

    第一组:2-4位表示文件所有者的权限,即用户user权限,简称u 在这里表示root用户有(rw-)的权限,可读(r)与可写(w)的权限,没有可执行(x)权限

    第二组:5-7位表示文件所有者所属组成员的权限,group权限,简称g 这里表示root组成员有(r--)的权限,只有可读的权限。

    第三组:8-10位表示所有者所属组之外的用户权限,other权限,简称o 这里表示其他人有(r--)的权限,只有可读的权限。

    修改文件或文件夹的权限

    [root@localhost /]chmod u+r test.txt //表示为root用户添加读的权限

    [root@localhost /]chmod g-w test.txt //表示为root组去除写的权限 

    [root@localhost /]chmod o+x test.txt //表示其他人添加可执行的权限

    如果我们要为所有用户添加所有rwx权限

    [root@localhost /]chmod u=rwx,g=rwx,o=rwx test.txt

    为了能更简单快捷的使用和熟悉权限,rwx权限可以用数字来表示,分别表示为r(4)、w(2)、x(1)

    [root@localhost /]chmod 456 test.txt //表示root用户对test具有r(4)的权限,root组队test文件具有r(4)+x(1)的权限,其他人具有rw的权限

    [root@localhost /]chmod 000 test.txt //表示去除所有权限


Linux设置时间同步

设置时间与时间服务器同步:

ntpdate 172.16.1.100



发起HTTP请求

一、get请求

  1、使用wget命令:

  wget "http://www.baidu.com"

  具体用法,查看:wget --help

  2、使用curl命令:(需要安装curl)

  curl "http://www.baidu.com" 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地

  curl -i "http://www.baidu.com" 显示全部信息

  curl -l "http://www.baidu.com" 只显示头部信息

  curl -v "http://www.baidu.com" 显示get请求全过程解析

二、post请求

  1、使用wget命令:(--post-data参数来实现)

  wget --post-data "user=foo&password=bar" "http://www.baidu.com"

  2、使用curl命令(通过-d参数,把访问参数放在里面):

  curl -d "param1=value1&param2=value2" "http://www.baidu.com"


查看占用cpu最高的进程


ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

或者top (然后按下M,注意这里是大写)


查看占用内存最高的进程


ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

或者top (然后按下P,注意这里是大写)


该命令组合实际上是下面两句命令:

ps aux|head -1

ps aux|grep -v PID|sort -rn -k +3|head


其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。

接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。

sort -rn -k +3该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k +3则是针对第3列的内容进行排序,再使用head命令获取默认前10行数据。(其中的|表示管道操作)


补充:内容解释


PID:进程的ID

USER:进程所有者

PR:进程的优先级别,越小越优先被执行

NInice:值

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

COMMAND:进程启动命令名称