linux 常用命令

系统


机器启动

poweroff
reboot
shutdown -r now

修改密码

passwd root

查看 CPU

cat /proc/cpuinfo | grep "processor" | wc -l

查看系统内存情况

free -m

查看系统信息

uname -a
cat /proc/version
cat /etc/redhat-release

软链接

ln -s source dest

防火墙

service iptables start 
service iptables stop

压缩解压

zip -r mydata.zip mydata
unzip my data -d mydatabak
tar zcf mydata.tar.gz mydata
tar zxf mydata.tar.gz

更新文件配置

source /etc/profile

机器是多少位

file /sbin/init 或者 file /bin/ls

环境变量

env

用户切换

su root
exit

日期

date -d @1361542596 +"%Y-%m-%d %H:%M:%S"

进程绝对路径

top -c
htop
ls -l /proc/pid
ps -ef 

文本

awk

awk 动作 文件名

echo 'this is a test' | awk '{print $0}'
echo 'this is a test' | awk '{print $3}'
awk -F ':' '{ print $1 }' demo.txt
echo 'this is a test' | awk '{print $NF}'
awk -F ':' '{print $1, $(NF-1)}' demo.txt
awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt

sed

字符串处理

sed -i "s/jack/tom/g" test.txt
sed -i "s/\/usr\/local\/bin/\/usr\/bin/g" /etc/init.d/fdfs_storaged

grep

命令 描述
-l 列出文件名
-r 递归遍历文件夹
-n 显示文件行数
-E 查找多个
-i 大小写匹配查找字符串
-w 匹配整个单词,而不是字符串
--include 搜索指定文件
# 找出文件(filename)中包含123或者包含abc的行
grep -E '123|abc' filename

# 只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -w pattern files

# 文件中查找字符串
grep "update" moment_audit.log | wc -l

# 递归文件夹在指定文件查找字符串
grep -r "pic" --include "*.md" .

磁盘文件

ls

选项 描述
-a 列出目录所有文件,包含以.开始的隐藏文件
-A 列出除.及..的其它文件
-r 反序排列
-t 以文件修改时间排序
-S 以文件大小排序
-h 以易读大小显示
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
# 文件个数

# 不含子文件
ls -l |grep "^-"|wc -l

# 包括子文件
ls -lR|grep "^-"|wc -l

tree

显示目录结构

tree /dir/ -L 1 

du

用于显示目录或文件的大小。

选项 描述
-h 以K,M,G为单位,提高信息的可读性。
-s 仅显示总计。
# 查看文件夹剩余空间
du -sh dir

df

Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

# 查看磁盘空间
df -h

tail

tail -f file
tail -f file | grep '123'

find

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
选项 描述
-name name, -iname name 文件名称符合 name 的文件。iname 会忽略大小写
-size 文件大小
-type 文件类型
f 一般文件
d 目录
# 查找删除文件
find / -name "*.mp3" |xargs rm -rf

# 查询最近两个小时修改过的文件
find /work/imdev/IM3.0 -iname "*" -mmin -120 -type f

# linux 命令行转换,将源码文件 tab 替换为 4 个空格 
find . -regex '.*\.h\|.*\.hpp\|.*\.cpp' ! -type d -exec bash -c 'expand -t 4 "$0" > /tmp/e && mv /tmp/e "$0"' {} \; 

# linux 命令行转换,将源码文件 tab 替换为 4 个空格 
find . -regex '.*\.h\|.*\.hpp\|.*\.cpp' ! -type d -exec bash -c 'expand -t 4 "$0" > /tmp/e && mv /tmp/e "$0"' {} \; 

# 查找大于 500 字节的文件,并且删除。
find ./ -size +500 | xargs rm -f

# 找出空文件
find / -type f -size 0 -exec ls -l {} \;

# 在某路径,查找带 xxx 关键字的所有文件,列出文件完整路径,文件行数。
find ~/src/other/c_test -name '*.cpp' -type f | xargs grep -n 'include'

# 将文件转换为 unix 格式
find . -type f -exec dos2unix {} \;

git

git 命令查看简单文档或 man git

参数 描述
pull 拉取文件
push 提交文件
git push -u origin master
log 文件是否存在
获取简单的日志
git log --pretty=oneline
status 目录文件状态
git status .
checkout 检索文件
git checkout sync_pic.sh
clone 拉取源码
git clone https://github.com/enki/libev.git
remote 查看 git 项目路径
git remote -v

权限

执行权限

chmod +x bus
chown -Rf imdev:imdev ./

进程线程

查找进程

ps aux | grep _proxy_srv

进程启动绝对路径

ps -ef | grep xxx
ll /proc/pid | grep exe

查进程名称对应的 pid

ps -ef | grep process_name | grep -v "grep" | awk '{print $2}' 
pidof redis-server

进程启动时间

ps -p PID -o lstart
ps -ef | grep redis | awk '{print $2}' | xargs ps -o pid,tty,user,comm,lstart,etime -p

查看线程

top -H -p pid
ps -efL | mysql | wc -l
pstree -p 1234 | wc -l

网络

scp

  1. scp -P端口号 本地文件路径 username@服务器ip:目的路径
  2. 从服务器下载文件到本地,scp -P端口号 username@ip:路径 本地路径
scp -P端口号 username@ip:路径 本地路径
scp -r root@120.25.83.263:/home/hhx/srv_20150120.tar.gz .
scp /Users/wenfahua/src/other/c_test/normal/proc/main.cpp root@120.25.83.163:/home/other/c_test/normal/proc

ssh

ssh -p22 root@121.25.83.163

tcpdump

Linux tcpdump命令用于倾倒网络传输数据

https://www.runoob.com/linux/linux-comm-tcpdump.html

选项 描述
-c <数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-i <网络界面> 使用指定的网络截面送出数据包。
-n 不把主机的网络地址转换成名字。
-q 快速输出,仅列出少数的传输协议信息。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-w <数据包文件> 把数据包数据写入指定的文件。
tcpdump port 80 and host www.baidu.com
tcpdump  host 192.168.100.18 and dst host 10.10.10.122
tcpdump -i eth0 -vnn dst host 10.10.10.122
tcpdump -i eth0 -vnn src host 192.168.100.18 and dst port 8060

#生产环境内网抓包。
tcpdump -i eth1 port 12911 -vvvv -nnn -w 123.cap

#内循环 127.0.0.1
tcpdump -i lo port 8333
tcpdump -i eth0 host api.fyber.com and port 80 -w 123.cap

wget

wget http://debuginfo.centos.org/6/x86_64/glibc-debuginfo-2.12-1.80.el6.x86_64.rpm

netstat

netstat 命令用于显示网络状态

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
选项 描述
-a 显示所有连线中的Socket。
-l 显示监控中的服务器的Socket。
-n 直接使用IP地址,而不通过域名服务器。
-p 显示正在使用Socket的程序识别码和程序名称。
-t 显示TCP传输协议的连线状况。
-u 显示UDP传输协议的连线状况。
netstat -nat|grep -i "80"|wc -l

lsof

 lsof -i:30004

shell

语法

for

for p in paths
do
done

if

if [ ! -d "$dir" ]; then
else
fi
参数 描述
-d 文件夹是否存在
-x 文件是否有执行权限
-f 文件是否存在

其它

有空格的路径 grep 操作。

infos=`grep -r $src_pic_path --include '*.md' . | tr " " "\?"`

有空格路径进行 sed 操作。

sed -i '' "s:$src_pic_path:\.\/pic:g" $file

命令

xargs

是给命令传递参数的一个过滤器

find /etc -name "*.conf" | xargs ls –l
cat url-list.txt | xargs wget –c
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

工具

top

#显示完整命令
top -c 
# 查看字段解析
shift + f 
# 内存排序
shift + m
# cpu 排序
shit + p 
top

htop

htop

iftop

iftop

nload

nload

nethogs

nethogs

iotop

iotop

vmstat

命令查看内存转换情况,跟踪转换的频率

swap 原因:系统内存不足会产生 swap,磁盘的速度读写速度是比较慢的,这会影响性能。

free
top
vmstat

vmstat 1 每秒输出一次统计结果

不是 swap 空间占用性能就会下降,要看 si so 频率。

swap

strace

#跟踪具体的进程信息
strace -p <PID>
#统计
strace -cp <PID>
#单独跟踪某个被定位的内核函数
strace -T -e clone -p <PID>
#显示调用高耗能内核函数的业务代码。
strace-eclone php -r 'exec("ls");'

gdb

参考 https://blog.csdn.net/men_wen/article/details/75220102

命令 操作
r 运行调试
n 下一步
c 继续运行
ctrl + c 中断信号
c/continue 中断后继续运行
s 进入一个函数
finish 退出函数
l 列出代码行
b 断点
显示断点列表 info b
删除断点 delete <number>
清除断点 clear
n 下一步
until 跳至行号
until <number>
p 打印
打印数组信息 p *array@len
p/x 按十六进制格式显示变量
bt/backtrace 堆栈bt <-n>
-n表一个负整数,表示只打印栈底下n层的栈信息。
f/frame 进入指定堆栈层
f <number>
thread apply all bt 显示线程所有堆栈
attach 绑定进程调试
attach <-p pid>
detach 取消绑定调试进程
disassemble 看二进制数据
disassemble <func>
x 查看内存
focus 显示源码界面
display 显示变量
info registers 查看寄存器

gcc

GNU Compiler Collection的缩写。最初是作为C语言的编译器,现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL语言等。

选项 描述
-o 生成目标( .i.s.o 、可执行文件等)
-c 通知 gcc 取消链接步骤,即编译源码并在最后生成目标文件。
-E 只运行 C 预编译器
-S 告诉编译器产生汇编语言文件后停止编译,产生的汇编语言文件扩展名为 .s
-Wall 使 gcc 对源文件的代码有问题的地方发出警告
-Idir 将dir目录加入搜索头文件的目录路径
-Ldir 将dir目录加入搜索库的目录路径
-llib 连接lib库
-g 在目标文件中嵌入调试信息,以便gdb之类的调试程序调试

参考

Linux 命令大全


更精彩内容,请关注我的博客:https://wenfh2020.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352