Linux常用命令汇总

本文总结日常工作中经常用到的linux命令,作为总结,以便学习和回顾。

1. vim

1.1 查找文件中的指定字符串

a. vim service.log --> ?abc 从倒数第一行到正数第一行的遍历方式查找文件service.log中的字符串abc,并高亮显示.
b. vim service.log --> /abc 从第一行到最后一行的遍历方式查找文件service.log中的字符串abc,并高亮显示.
c. n 显示下一个a或者b搜索到的字符串abc
d. Ctrl + B 向上翻页
e. Ctrl + F 向下翻页
f. $ 显示最后一页
g. set hls 打开高亮
h. set nohls 关闭高亮

2. df

2.1 df -h

查看机器磁盘空间

2.2 du -h .

查看当前目录(.)下的文件大小

3. netstat

netstat -a 列出所有当前的连接
netstat -at 只列出 TCP 协议的连接
netstat -au只列出 UDP 协议的连接
netstat -l 只列出正在监听的链接
netstat -p 获取进程名,进程号以及用户Id等信息

4. pwd

显示当前路径

5. cd

cd abc 切换到abc目录
cd .. 返回上一目录
cd ../../.. 连续返回上一目录三次

6. ssh

ssh lance@192.168.0.122 使用指定账户登陆到指定机器(后续需要输入密码)
ssh 192.168.0.122 使用当前用户登录到192.168.0.122机器

7. tail

tail -f service.log 实时显示文件service.log的最后10行(动态)
tail -1000f service.log 实时显示文件service.log的最后1000行(动态)
tail -f * 实时显示当前目录下所有文件的的最后10行(动态)

8. mkdir

mkdir abc 创建目录
rmdir 删除空目录

9. rm

rm abc,删除abc文件
rm * 删除当前目录下的所有文件
rm -f 强制删除文件或目录
rm -r 递归删除指定目录下的所有文件和子目录
rm -rf abc 强制+递归删除目录为abc的目录

10. top

动态显示当前耗费资源最多进程信息

11.curl 构造http请求

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"context":{"userId":"1967","userName":"lance"},"id": "11223344"}' 'http://service.company.com/business/function'
说明:
curl -v 显示返回的状态码等信息
如果使用GET,且url中有中文,如:
curl -v -X GET 'http://service.company.com/business/Search?keyword=中华人民共和国&pageIndex=1&pageSize=5'
因为有中文,所以会报错,提示Encoding错误:

 HTTP/1.1 400 Bad Request
  Server: Apache-Coyote/1.1
  Transfer-Encoding: chunked
  Date: Fri, 19 Apr 2019 02:43:59 GMT
  Connection: close

可以使用:URLEncoder.encode方法转成utf-8格式:

 String str = "中华人民共和国";
 System.out.println(URLEncoder.encode(str,"utf-8"));

即:curl -v -X GET 'http://service.company.com/business/Search?keyword=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD&pageIndex=1&pageSize=5'

12. vmstat

-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:输出信息的单位。

后面跟数字, 如vmstat 2 10 表示每隔2秒采集一次数据,显示10次。

13. rpm -qa

rpm -qa 查询安装了那些软件包
rpm -qa zip 查看安装包,且安装包的名称包含zip

14.cat

cat lance.txt 显示整个文件
cat lance.txt | tail -n +100 | head -n 500 从第100行开始,显示500行,即显示100~599行
cat lance.txt | head -n 300 | tail -n +100 显示100行到300行
cat file1 file2 > lance.txt 将file1和file2合并成lance.txt

15.sed

常用选项:
-n∶打印到屏幕
-e∶编辑;
-f∶直接写入文件;
-i∶修改读取的文件内容。

常用命令:
a ∶新增
c ∶取代
d ∶删除
i ∶插入
p ∶打印行
s ∶取代
举例:
sed '1d' lance.txt 删除第一行
sed -n '100,200p' lance.txt 显示第100行到200行
sed -n '/Exception/p' lance.txt 显示包含Exception的所有行
sed '1c lance' lance.txt 将第一行替换为lance

16.查看曾经执行的命令历史记录

history

17.查看内存使用情况

free -h 格式化的显示linux的内存

18.压缩和解压缩文件

19.sudo

sudo rm file.txt
sudo -u lance1 rm file.txt 以lance1的身份执行删除命令

20.du

du -sh * 查看当前目录下的所有文件和目录的大小

21.grep 检索

ps -ef | grep lance 搜索进程中的lance
ps -ef | grep lance --color=auto 搜索进程中的lance,并高亮显示lance
cat lance.txt | grep lance --color=auto 搜索文件lance.txt中的lance,并高亮显示lance
more lance.txt | grep -C 10 zhang 搜索文件lance.txt中的zhang,并显示匹配到的数据的前后10行
more lance.txt | grep -A 10 zhang 搜索文件lance.txt中的zhang,并显示匹配到的数据的后10行
more lance.txt | grep -B 10 zhang 搜索文件lance.txt中的zhang,并显示匹配到的数据的前10行
grep -B 10 zhang lance.txt 搜索文件lance.txt中的zhang,并显示匹配到的数据的前10行
less error.log | grep Exception | grep -v WARN 搜索文件error.log中的Exception,并排除含有WARN字符串的行。

22.查看CPU的信息

lscpu

23 ln 创建连接

ln -s /usr/lance/data /dev/data 创建软连接,相当于window的快捷键;
ln -d /usr/lance/data.log /dev/data.log 创建硬连接,相当于文件的备份,仅支持文件不支持目录;

24 查看linux日期和时间

date
date -R

25 移动或重命名文件/目录

mv file1.txt /opt/lance 将文件移动到/opt/lance目录
mv file1.txt file2.txt /opt/lance 将文件移动到/opt/lance目录
mv *.txt /opt/lance 将文件移动到/opt/lance目录
mv file1.txt file2.txt 将文件file1.txt重命名为file2.txt

26 nohup & 后台执行

nohup [command] [args]
nohup java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2
a.默认输出到nohup.out;
b.使用Ctrl + C会发送SIGINT中断信号,使程序关闭;
c.关闭session发送SIGHUP挂起信号,程序免疫。

&后台运行程序
[command] [args] &
java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2 &
a.输出结果到终端;
b.使用Ctrl + C会发送SIGINT中断信号,程序免疫;
c.关闭session发送SIGHUP挂起信号,程序关闭。

最佳实践:
nohup [command] [args] &
nohup java -jar -Xms2048m -Xmx4000m XXX.jar arg1 arg2 &
这样同时免疫SIGINT中断信号和SIGHUP挂起信号,而且信息输出到了nohup.out文件中,日志信息得以持久保留。

nohup的参数:
0:表示stdin标准输入;
1:表示stdout标准输出,为缺省值;
2:表示stderr标准错误。

nohup [command] [args] > file.log 等于 nohup [command] [args] 1> file.log 即将标准输出输出到file.log文件;
nohup [command] [args] 2> errorFile.log 将错误输出到errorFile.log文件;
nohup [command] [args] 2>&1 将错误输出重定向到标准输出。

27 awk

awk [-F field-separator] 'commands' input-file(s)
读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键"

[lance@172.28.0.172 ~]$ last -n 5
lance   pts/2        172.28.0.172     Tue Jun 11 14:07   still logged in
root    pts/0        172.28.3.250     Tue Jun 11 11:08   still logged in
lance   pts/0        172.28.3.250     Tue Jun 11 10:39 - 10:39  (00:00)
lance   pts/0        172.28.3.250     Mon Jun 10 18:17 - 19:16  (00:59)
zhangz  pts/2        172.29.0.64      Tue Jun  4 15:01 - 21:00 (1+05:58)

[lance@172.28.0.172 ~]$ last -n 5 | awk '{print $3}'
172.28.0.172
172.28.3.250
172.28.3.250
172.28.3.250
172.29.0.64

[lance@172.28.0.172 ~]$ last -n 5 | awk '{print $3}' | awk -F '.' '{print $1}'
172
172
172
172
172



awk -F ':' '{printf("file:%10s,linenum:%s,colums:%s,content:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd
awk -F ':' '{print "file:"FILENAME ",linenum:" NR ",columns:" NF ",content:"$0}' /etc/passwd
awk内置变量

内置变量 说明
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
$0 当前记录(作为单个变量)
$1~$n 当前记录的第n个字段,字段间由FS分隔

awk提供了print和printf两种打印输出,printf类似于C++中的格式化输出。

28 wc 统计输出个数

wc [OPTION]... [FILE]... 
  -c, --bytes            print the byte counts
  -m, --chars            print the character counts
  -l, --lines            print the newline counts
      --files0-from=F    read input from the files specified by
                           NUL-terminated names in file F;
                           If F is - then read names from standard input
  -L, --max-line-length  print the length of the longest line
  -w, --words            print the word counts
      --help     display this help and exit
      --version  output version information and exit

举例:last | wc -l
举例:last -n 10 | wc -l

29 scp 复制文件

scp lance@172.17.10.21:/home/lance/test.sh . 下载文件
scp test.sh lance@172.17.10.21:/home/lance 上传文件

scp -r lance@172.17.10.21:/home/lance . 下载目录
scp -r . lance@172.17.10.21:/home/lance 上传目录

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

推荐阅读更多精彩内容