Linux常用命令

此部分主要考察java从业者的线上问题排查能力,现基于CentOS release 6.5 (Final)简要介绍如下6个命令[^1],期间用poem文件举例。推荐查询linux命令的两个网址Linux 命令大全 | 菜鸟教程Linux命令大全(手册)

1
2
3
4
5
6
7
8
9
cat poem
******结果******
1 --------------------------
2 The Noon Balloon
3 Will be leaving soon
4 For the sun or the moon.
5 And wherever it goes,
6 It will get there too soon.
7 --------------------------

awk命令(菜鸟教程

功能:数据处理工具(默认分隔符:空格或tab)
sed常用作一整行的处理,awk则倾向于将一行分成数个“字段”处理,适合小型数据处理。
语法:awk ‘条件类型1 {动作1} 条件类型2 {动作2}…’ filename
e.g. 输出poem中第2行至第6行的第2列与第4列内容以及第1列乘10结果,中间以#符分割(提示:NR为当前处理行的行号

1
2
3
4
5
6
7
awk 'NR>=2 && NR<=6 {print $2"#"$4"#"$1*10}' poem
******结果******
The#Balloon#20
Will#leaving#30
For#sun#40
And#it#50
It#get#60

top命令(菜鸟教程

功能:动态查看进程变化,
语法:top [-d 数字] | top [-bnp]
-d 页面刷新时间间隔描述,本次所用系统默认3秒
-b 以批次的形式展现
-n 执行几次后停止
-p 查看进程号为p的进程动态

e.g. 每隔3秒批次查看进程号为1673的进程3次,然后结束。
top -d 3 -b -n 3 -p 1673
top命令执行结果

netstat(菜鸟教程

功能:跟踪网络
语法:netstat -[atunlp]
-a 显示系统所有连接、监听、Socket
-t 列出tcp网络数据包的数据
-u 列出udp网络数据包的数据
-n 不列出进程的服务名称,以端口号显示
-l 列出正在监听的服务
-p 列出进程号为PID的进程
e.g. 累出目前系统已经新建的网络连接与Unix Socket状态
netstat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 node4:42278 node1:intu-ec-svcdisc SYN_SENT
tcp 0 1 node4:59492 node2:intu-ec-svcdisc SYN_SENT
tcp 0 0 node4:ssh 192.168.226.1:56589 ESTABLISHED
tcp 0 132 node4:ssh 192.168.226.1:53859 ESTABLISHED
tcp 0 0 node4:8031 node4:32834 ESTABLISHED
tcp 0 1 node4:44307 node1:eforward SYN_SENT
tcp 0 0 node4:32834 node4:8031 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 14 [ ] DGRAM 11626 /dev/log
unix 2 [ ] DGRAM 9228 @/org/kernel/udev/udevd
unix 2 [ ] DGRAM 12430 @/org/freedesktop/hal/udev_event
…(省略)…

grep(菜鸟教程

功能:分析一行数据,后边常跟正则表达式
语法:grep [-acinv] [–color=auto] ‘查找字符串’ filename
-a 将binary文件以text文件方式查找数据
-c 计算找到’查找字符串’的次数
-i 忽略大小写的不同
-n 输出行号
-v 输出没有’查找字符串’的那一行
e.g. 输出poem包含’l’字符的几行,顺带输出行号
grep -n 'l' poem

1
2
3
2:2 The Noon Balloon
3:3 Will be leaving soon
6:6 It will get there too soon.

less(菜鸟教程

功能:一页一页翻动(往前往后翻)
由于poem文件长度较短,不便演示

tail(菜鸟教程

功能:取出后面几行
语法:tail -n
e.g. 显示poem后两行

1
2
3
4
tail -n 2 poem
******结果******
6 It will get there too soon.
7 --------------------------

添加新用户,并赋予root权限

1
2
3
4
useradd newuser
passwd newuser
-- 输入密码
usermod -aG wheel newuser

远程服务器免密登录设置

1
2
3
4
5
6
7
#1. 本地生成ssh公私钥
ssh-keygen -t rsa
#2. 复制当前用户目录下.ssh/id_rsa.pub文件内容
#3. 将文件内容复制到远程服务器的.ssh/authorized_keys文件中
#4. 设置远程服务器上文件访问权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

sudo和man的tab自动补全

1
2
3
4
5
6
7
# 在~/.bashrc中加入
# Enabling tab-completion
complete -cf sudo
complete -cf man

# 更新配置文件
source ~/.bashrc

[^1]:鸟哥. 鸟哥的Linux私房菜[M]. 北京: 人民邮电出版社, 2016.

码哥 wechat
欢迎关注个人订阅号:「码上行动GO」