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 上传目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容