pstree 查看进程层级关系,常用选项pstree -p jobs查看当前终端后台进程列表 fg恢复前台运行,跟的序号可以从jobs看到 ctrl+z将进程弄到后台
pidof
操作系统主要使用的4类资源: cpu io memory network top:整体资源消耗情况,动态显示 iostat观察磁盘读写速度
sar
ps -Lf pid查看进程和轻量级进程(即线程信息) ps -Lf 1495|grep -v UID|wc -l 查看pid为1495的进程的线程总数 等同于 pstree -p 1495|wc -l 在加1 (不会统计父线程)
ps -eLF 查看线程, PSR表示运行在哪个核心
!?字符串 指向最近一次包含此字符串的命令
arp -a 查看所有arp缓存
先想象一下,如何在终端下打开多个程序然后像在图形界面下那样相互切换? 使用 vim 时,在普通模式下按 ctrl + z 就能返回终端,这时候你可以继续做任何事情,甚至可以再打开一个 vim。 如何返回已经打开的程序呢?很简单,使用 jobs 命令可以看到当前环境下的所有任务编号,然后通过 fg NUM 命令切换至对应任务,其中 NUM 是任务编号。 ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停
pwdx 根据进程id查看启动路径
tcpflow安装 rpm -ivh ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoga/CentOS_CentOS-6/x86_64/tcpflow-0.21-5.3.x86_64.rpm
centos7安装 rpm -ivh rpmfind.net/linux/dag/r…
history -c 清除的只是内存中的history
readonly HISTTIMEFORMAT="%F %T who am i |awk '{print $1}' whoami "
查看命令与对应用户
fc :如果输入很长的一段命令,提示我们中间某个字符输错了,如何快速跑到错误的位置进行更改?输入fc即可,会进入vim模式,更改完后,:q 退出将会自动执行命令 (这是bash的实用功能)
cat .bash_history中还保存着历史
tr 用于转换 cat testFile |tr a-z A-Z (translate) tr -d '\n' (-d用于删除字符,去掉换行符) -s转换后 删除重复的行
nl filename 可以打印文件内容,带着行号
uniq -c 统计计数
sort -r 倒序 -n按数字排序 -t指定分隔符 -k根据第几列排序 -k3.1,3.4 第3列第一个字符到第4个字符
netstat -ntlp
cal显示日历
tail -n +K 从第K行开始输出
tail -n K 输出最后K行
getline a获取第一行,并赋值给a变量
cat -n显示行号
cat /etc/fstab
grep -ir xxx * 递归查找子目录
readlink 等价于ls -l
seq 10 ,输出 110序列
seq 1 5 输出15
seq 1 2 10 输出1 3 5 7 9,每次步进2
seq -s+ 指定输出分割符号为+
wc -l显示多少行
export 设置环境变量,要重启终端才能在 set命令后看出真正变化 tree 功能说明:以树状图列出目录的内容。 让一个用户无密码直接切换到root vim /etc/sudoers %username ALL=(ALL) NOPASSWORD /bin/su - root 使用方法:sudo su - root
curl www.baidu.com 下载单个文件的内容,默认使用GET方式请求数据并将其打印到标准输出,可使用重定向将内容输出到文件 -O采用默认文件名输出 ,-o采用指定文件名输出,相当于wget了,少用,一般用重定向 -i 输出http 响应包头部信息。 -L : 对于会临时重定向的页面,要加入-L,不然不会打印内容 -v: 可以显示一次http通信的整个过程,包括端口连接和http request头信息, 比较实用 --trace: curl --trace output.txt www.sina.com 可以把数据包的机器码格式也打印,比-v更详细 可以通过 --data/-d 方式指定使用POST方式传递数据 curl -X 指定请求方法 如post,必须大写 发送json格式数据:curl -X POST -d {"title":"http.ServeMux", "description":"http.ServeMux is a request Multiplexer"}' http://localhost:8080/api/notes -H自定义头部 curl 'sql.baijiahulian.com/dumpdata/do…' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' curl指定各种头用多个-H, 指定json数据 -H "Content-Type:application/json" 注意-d 后接的是json字符串。字符串。
命令 ldd:用于打印程序或者库文件所依赖的共享库列表。list, dynamic, dependencies
tar -c 可以指定路径
locate:依赖于事先构建好的搜索库,系统自动实现(Linux系统自动创建/var/lib/mlocate/mlocate.db数据库,并且每天自动更新一次),可以在使用locate之前,先使用updatedb命令,手动更新数据库,但消耗资源,速度快,模糊查找 "locate -c" 查询指定文件的数目。(c为count的意思) "locate -e" 只显示当前存在的文件条目。(e为existing的意思) "locate -h" 显示"locate"命令的帮助信息。(h为help的意思) "locate -i" 查找时忽略大小写区别。(i为ignore的意思) "locate -n" 最大显示条数" 至多显示"最大显示条数"条查询到的内容。 "locate -r" 使用正则运算式做寻找的条件。(r为regexp的意思) find
echo命令 输出内容后会在内容后面自动带上回车(\n),想要没回车加上-n选项
如果想让一个程序在后台运行,只要在执行命令的末尾加上一个&符号就可以了。但是这种方式不是很保险,有些程序当你登出终端后它就会停止。那么如何让一个程序真正永远在后台执行呢。答案就是使用 nohup和&组合使用 在linux进行下载很久的任务,但是终端关闭的时候,我们是不希望下载被终止的。所以,可以采用nohup命令的方式,让程序运行的时候,忽略掉终端关闭的信号。 此外screen也是个好办法。 1.screen -r 看有哪些screen会话 再 screen -r id号登进screen会话 2. control 同时再按 a 和 d键 退出screen会话 只要记住两条命令screen -r , control a和d就行,其它screen -ls的效果其实用screen -r也能看到
ss命令查询网络的连接信息,拥有比netstat更好的性能 ss -l strace -T -e futex -f -p 7640 -s strsize Specify the maximum string size to print (the default is 32). Note that filenames are not considered strings and are always printed in full.
sar [options] [-A] [-o file] t [n] t为采样次数 ,n为采样间隔 默认为1 sar -n(显示网络统计信息) DEV(表示网络接口) 1 (每秒输出1次)可以查看发送和接收pps
pidstat -d 2 [count]每隔两秒输出一次,可以打印磁盘io速率,可以精确到显示每个命令,不指定count会一直打印下去
使用-r选项,pidstat将显示各活动进程的内存使用统计
rss表示物理内存,vsz表示虚拟内存,单位为kb
-p pid 可以具体打印某个进程
最常用的2条命令:pidstat -r 1 pidstat -d 1
lsof命令后直接接文件名,可以查到该文件被哪些进程打开: lsof -i显示所有打开的端口 lsof -i:80显示所有打开80端口的进程 -p列出所有由某个PID对应的进程打开的文件 -i来拉出一个端口列表,同时又用-p来拉出一个进程列表,那么默认情况下你会获得两者的结果。 -a : 结果进行“与”运算(而不是“或”) lsof -iTCP 使用@host来显示指定到指定主机的连接 这对于你在检查是否开放连接到网络中或互联网上某个指定主机的连接时十分有用 -u显示指定的用户打开了什么 -t选项只返回PID 使用-c查看指定的命令正在使用的文件和网络连接
在umount文件系统时,如果文件系统中有打开的文件,那么umount操作会失败,报“device is busy”。这时可使用”lsof /dev/sdaX”显示sdaX文件系统中被打开的所有文件,再关闭所列文件。 当进程打开了某个文件时,只要该进程保持打开该文件,即使将文件删除,文件依然存在于磁盘中。进程并不知道文件已经被删除,它依然可以使用打开该文件时获取到的文件描述符进行读取和写入。除了该进程外,这个文件是不可见的,因为已经删除了其相应的目录条目。
whatis:用于查询一个命令执行什么功能,并将查询结果打印到终端上
scp的坑: scp拷贝目录时 如果远程目录是空目录的话,会自动创建远程目录,并且将源目录里面的内容拷贝过去,而不是将源目录拷贝出去
route -n 显示路由表
远程端口是否开放 telnet ip port 或者nmap -p 端口号 host_ip :这个更智能,能识别不通的原因是防火墙限制了或是其它
traceroute ip 可以分析每一跳路由,看到是哪里的网络段比较慢
tcpdump -n 不把host addr转成host name,可以避开dns查询,加快速度 搞相反的事情可用 not port 指定端口 如:tcpdump -n host web1 port 80 or port 443 or可以连接多个命令 -l 可以把输出缓冲,这样就可以实现在命令行看输出的同时,把输出重定向到文件中: tcpdump -n -l host web1 |tee tcp.txt -w可以保存原始数据包 tcpdump -w output.pcap -C 指定输出文件的最大尺寸,之后会创建另一个文件输出(output.pcap.2 ,3,4....),单位是M -W 指定 分卷文件数量 tcpdump -nnX -i eth0 port 20004 -nn表示用ip和端口代替域名和服务名 tcpdump -A -r xxx.pcap -r表示读取包文件 -A表示用asciil显示 -c选项运维人员常用,指定抓包个数 我们可以只抓某种协议的包,tcpdump支持指定以下协议:ip,ip6,arp,tcp,udp,wlan等。以下例子只抓取arp协议的包: tcpdump -i eth0 arp tcpdump可以配合管道符加上strings命令使用 -w - 表述输出原始包,即-代表标准输出 -s指定抓取多少个字节 -s 0表示全部抓取 如果是本机间传输,不经过以太网卡,而是使用本地回环网卡lo才能抓到包