rpm

rpm -qf `whereis ps`    可以查出ps这个命令是哪个包的

rpm -ql jenkins        查jenkins这个rpm包相关的路径有哪些

yum

yum search  jdk           根据关键字来搜索系统上的包,查看jdk的相关信息。这样子就能看到系统上有几个版本的jdk包。

yum list 显示所有已经安装和可以安装的程序包。

top

top -c -d 1

输入了P(冒号P)之后:按照cpu排序

输入T(冒号T):根据时间、累计时间排序,可查看哪些进程消耗历史消耗多

1:多核    (注意是数字1而不是字母l)

m:是否显示内存信息

M:根据内存排序

H:shift+h,打开线程模式

x:列的高亮(先要按b)

shift+<或者shift+>改变排序的行

ls

-lhS   按照文件大小从大到小列出来。

cp

-a   相当于-dpR,保持文件的链接(d),保持原文件的属性(p)并作递归处理(R)

-i    交互模式下会询问是否覆盖目标目录下的文件。使用 -i 选项,启用交互模式。

\cp -r -a aaa/* /bbb     #没有提示按Y、传递了目录属性、没有略过目录。


cut

-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。

echo

-n     #参数 -n 是最后不换行,echo默认是换行

-e     #如果有特殊字符,就进行特别处理 例如

\n   换行且光标移至行首

\t    插入 tab

read

read命令接收标准输入(键盘)的输入,或其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。

echo -n "Enter your name: "        ==>      read -p "Enter your name: " name

read  name                                                  echo "hello $name"

echo "hello $name"


dd

1、创建一个100M的空文件

dd if=/dev/zero of=hello.txt bs=100M count=1

/dev/zero,是一个输入设备,该设备无穷尽地提供0,你可你用它来初始化文件。

find

-print      在每一个输出后会添加一个回车换行符,而-print0则不会。

-delete    找到相关文件后删除。

find / -type f -print | xargs grep "device"  在所有的文件中搜索device这个词

find ./ -size +100M -type f  查找当前目录大于100M的文件 # +号表示大于,-号表示小于,什么都没有表示等于

find . -mtime +3 -type f       找出三天前被改动过的文件

find . -mtime -3 -type f        找出三天之内被改动过的文件

find . -name "*.txt"                找出后缀为 .txt 的文件


xargs

0 3 * * * /bin/find /data/projects/ -name "*.zip" -type f -mtime +7 |xargs rm -f

find ./ -name "$zipfile*" -type d |xargs rm -rf             或者  find -type d -name "*xxx*" | xargs grep -n "关键字"   比较经常这样子使用xargs

head tail

head -n 10 file  #取文件的头10行

tail -n 10 file  #取文件的尾10行

tail -fn 200 file   #动态取文件的尾200行

ln

ln -sv 源文件 目标文件      #  ln -sv jdk1.7.0_80 jdk  ,可以直接删除目标文件,比如 rm -rf jdk,ln -sv logstash-2.3.0 logstash ,不要 ln -sv logstash-2.3.0/  logstash/

file

file filename  #看是什么类型文件,有时候不要看到扩展名就判断是什么文件

curl

curl -I -H "Host:hbfile.m.cn" "http://119.29.237.71/2/p_w_picpath/yi/400X400_160712150925514.jpg"

/usr/bin/curl -I -H "host: bbs.online.seedit.cc" http://172.17.0.22:80/php-fpm_status 2>/dev/null|grep "idle processes"|awk '{print $3}’  #指定主机头来访问,因为有很多域名监听在同一个IP和不同的端口上


-A 'user agent'     模拟用户浏览器   例如:curl -I -A 'UCWEB'  http://www.baidu.com

-x ip:port               指定访问所使用的proxy服务器及其端口

-X POST                 指定协议,默认GET 

date

date +%Y%m%d                                   20150810

date "+%Y-%m-%d %H:%M:%S"        2015-08-10 10:13:18

-d 选项: (当前日期是0810)

date -d "+2month" +%Y%m%d         20151010

date -d "+2day" +%Y%m%d               20150812

date -d "-7day" +"%Y%m%d"             20150803

kill

-l     #列出所有信号名称

-s     #发送信号

kill -USR1 pid     #重新打开日志文件

kill -HUP pid(`cat nginx.pid`)   #重新加载配置文件,平滑重启,和 -s reload(也是平滑重启) 同样的意思,

killall -HUP pName

kill -9 pid     #强制杀死进程

-s reload 和 kill -HUP的区别:

-s reload不会结束会话请求 kill -HUP会发送信号让子进程全部结束


cat

cat>xxoo.sh <<EOF

xxoo

xxoo

EOF

-n    #对文件进行编号输出

sudo dmidecode -t system     #查看服务器的牌子

cat /etc/issue                           #查看系统版本

uname -a                                 #查看内核

netstat

netstat -anp|grep 22              #知道端口号,找出进程号

netstat -anp|grep ssh             #知道进程名字,找出进程号。

lsof

lsof -p `cat xoxo.pid`             #列出所有由某个pid对应进程打开的文件

lsof -i:80                                #找到使用某个端口(这里是80)的进程

lsof | grep delete                   #获取已经被删除但仍然被应用程序占用的文件列表

lsof -i :8080|awk '/java/{print $2}'  ==> lsof -n -P -t -i:8080   #知道端口号,找出进程号pid

chattr与lsattr

这两个命令使用查看和改变文件和目录属性的,与chmod命令相比,chmod命令只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr [+-=][ASacdistu] [文件或目录名称]

i     他可以让一个文件不能被删除、改名、设定连结也无法写入或新增数据!对于系统安全性有相当大的帮助!

a   让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件



范例1:

chattr +i /etc/shadow              添加“i”隐性属性后,就无法变更这个文件了

chattr -i /etc/shadow      解除“i”这个隐性属性

lsattr /etc/shadow         查看这个文件属性,会显示

—--i————   /etc/shadow

范例2:

chattr +a  /var/log/message

time        #执行命令并计时

bozhong@online:~$ time date

Fri Jan 30 14:00:32 CST 2015

real 0m0.003s

user 0m0.001s

sys 0m0.002s



md5sum      #MD5算法,其实就是用来验证文件有没有被修改过

一、获得一个文件的md5值:

[root@vagrant-centos64 ~]# md5sum auto_bak.bash

7bb5f124edc590a43180f9558b3b8e31  auto_bak.bash

二、检查文件是否改变

[oracle@node1 ~]$ touch file1 file2

[oracle@node1 ~]$ ls

file1 file2 patch.log

[oracle@node1 ~]$

[oracle@node1 ~]$ md5sum file1 file2>f1f2

[oracle@node1 ~]$ md5sum --check f1f2

file1: OK

file2: OK

[oracle@node1 ~]$ echo "change" >>file1

[oracle@node1 ~]$ md5sum --check f1f2

file1: FAILED

file2: OK

md5sum: WARNING: 1 of 2 computed checksums did NOT match



history

history -c    #清空历史记录


w    #显示目前登陆系统的用户信息


strace 

-p pid          #追踪该进程的动作

-c                #统计每种系统调用所执行的时间,调用次数,出错次数。   strace -c -p pid

strace  命令        #strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。


ssh

免密码登录:

ssh-keygen -t rsa        三次回车即可。

ssh-copy-id -i /root/.ssh/id_rsa.pub 10.250.2.220

ssh-copy-id -i ~/.ssh/id_rsa.pub “ -p 9090 10.250.2.220" #ssh的端口是9090

ssh 10.250.1.220 "rm -rf /opt/src/jinhaima*"

screen

screen -list                 #显示目前所有的screen作业

screen -r  pid             #恢复离线的screen作业

Ctrl + a + d                #暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里    每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响


sort 

-r             #默认升序,-r降序

-u            #去除重复行

-n            #要以数值来排序

-k            #指定列数 -k 2  指定第二列

-t             #分隔符    -t :    冒号为分隔符

uniq

cat a.txt | sort | uniq -c      #打印重复次数

ss

-s             #列出当前socket详细信息

[root@api1.web.gz.net 10:02:11 ~]#ss -ant|awk '{a[$1]++}END{for(i in a){print i,a[i]}}'

ESTAB 14

State 1

TIME-WAIT 152

LISTEN 10

                 #将$1字段相同的个数累加放进数组里面。


scp

-v             #查看debug信息,如果传输出错,可以通过 -v 看。

scp   user@ip:dir dir   也可以  scp  dir  user@ip:dir  

tree

-L             #显示多少级目录,-L 2 显示两级目录。tree -L 2 

rz

-y           #替换已有文件

cd

cd -          #回到上一个命令的目录

sh -x  xx.sh      #"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。


mkpasswd

mkpasswd -l 32 -d 10 -C 10       #mkpasswd命令生成随机复杂密码,前提安装expect,然后执行mkpasswd命令即可生成随机的密码,也可以用md5sum,例如echo fengxusong|md5sum,给用户改密码:echo fengxusong|md5sum | awk '{print $1}' | passwd --stdin fengxusong