15

简简单单之Linux命令入门

 4 years ago
source link: https://segmentfault.com/a/1190000021567852
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

show me the code and talk to me,做的出来更要说的明白

GitHub 项目 JavaHouse 同步收录

我是布尔bl,你的支持是我分享的动力!

引入

作为一名合格的后端开发人员,我们难免要在 Linux 环境下进入操作,查找问题,配置文件等等操作。因此,我觉得我们需要掌握简单的 Linux 命令。本文简简单单介绍一下 Linux 的常见操作,努力让读者在 Linux 环境下可以进行工作。

目录结构

NFNJ7jB.png!web

Linux 大体目录结构如图所示。其中上面的 / 表示的是跟目录。

显示目录位置 pwd

[root@iZm5eixsxpdmrg95cpxvmlZ /]# pwd

/

进入目录 cd

[root@iZm5eixsxpdmrg95cpxvmlZ /]# cd usr/
[root@iZm5eixsxpdmrg95cpxvmlZ usr]# pwd
/usr

可以看到我们进入了 usr 目录

显示内容 ll

[root@iZm5eixsxpdmrg95cpxvmlZ usr]# ll

total 136
dr-xr-xr-x.   2 root root 32768 Jan  6 21:00 bin
drwxr-xr-x.   2 root root  4096 Apr 11  2018 etc
drwxr-xr-x.   2 root root  4096 Apr 11  2018 games
drwxr-xr-x.  69 root root 12288 Dec  4 11:16 include
drwxr-xr-x    3 root root  4096 Dec  4 11:27 java
dr-xr-xr-x.  33 root root  4096 Jan  6 21:02 lib
dr-xr-xr-x.  49 root root 36864 Jan  6 21:00 lib64
drwxr-xr-x.  24 root root  4096 Dec  4 11:16 libexec
drwxr-xr-x.  21 root root  4096 Jan  6 21:02 local
dr-xr-xr-x.   2 root root 16384 Jan  6 21:02 sbin
drwxr-xr-x. 104 root root  4096 Jan  6 21:00 share
drwxr-xr-x.   4 root root  4096 Jul 11  2019 src
lrwxrwxrwx.   1 root root    10 Jul 11  2019 tmp -> ../var/tmp

该命令可以显示目录里面所有的文件名称、文件的权限、文件大小(kb)等等详细信息。

进入根目录 cd /

[root@iZm5eixsxpdmrg95cpxvmlZ usr]# cd /
[root@iZm5eixsxpdmrg95cpxvmlZ /]# ll

total 2097224
lrwxrwxrwx.  1 root root          7 Jul 11  2019 bin -> usr/bin
dr-xr-xr-x.  5 root root       4096 Jul 11  2019 boot
drwxr-xr-x   6 root root       4096 Dec 15 10:04 data
drwxr-xr-x  19 root root       2960 Dec 15 10:05 dev
drwxr-xr-x. 82 root root       4096 Jan  6 21:02 etc
drwxr-xr-x.  2 root root       4096 Apr 11  2018 home
drwxr-xr-x   3 root root       4096 Dec  4 11:04 java
lrwxrwxrwx.  1 root root          7 Jul 11  2019 lib -> usr/lib
lrwxrwxrwx.  1 root root          9 Jul 11  2019 lib64 -> usr/lib64
drwx------.  2 root root      16384 Jul 11  2019 lost+found
drwxr-xr-x.  2 root root       4096 Apr 11  2018 media
drwxr-xr-x.  2 root root       4096 Apr 11  2018 mnt
drwxr-xr-x.  2 root root       4096 Apr 11  2018 opt
dr-xr-xr-x  92 root root          0 Dec 15 10:05 proc
dr-xr-x---.  5 root root       4096 Jan 10 10:57 root
drwxr-xr-x  24 root root        720 Jan  6 21:00 run
lrwxrwxrwx.  1 root root          8 Jul 11  2019 sbin -> usr/sbin
drwxr-xr-x.  2 root root       4096 Apr 11  2018 srv
-rw-------   1 root root 2147483648 Dec  4 11:13 swapfile
dr-xr-xr-x  13 root root          0 Dec 15 15:28 sys
drwxrwxrwt.  9 root root       4096 Jan 10 03:15 tmp
drwxr-xr-x. 14 root root       4096 Dec  4 11:27 usr
drwxr-xr-x. 19 root root       4096 Jul 11  2019 var

进入上级目录 cd ..

[root@iZm5eixsxpdmrg95cpxvmlZ /]# cd /usr/
[root@iZm5eixsxpdmrg95cpxvmlZ usr]# cd ..
[root@iZm5eixsxpdmrg95cpxvmlZ /]# pwd
/

文件权限 chmod

一般来说一个文件有三种角色

  • 拥有者
  • 拥有组
  • 其他人

权限有三种表示

  • r 表示只可以读文件,可以用数字 4 代替
  • w 表示只可以写文件,可以用数字 2 代替
  • x 表示只可以执行文件,可以用数字 1 代替

其中数字可以累加

  • 5 表示可读可执行
  • 6 表示可读可写
  • 7 表示可读可写可执行

举个例子

chmod 754 a.txt

该命令表示

  • 拥有者可读可写可执行
  • 拥有组可读写可执行
  • 其他者可读

可见三个数字是表示三种不同角色。

查找目录

find 位置  -name 文件名

例子

[root@iZm5eixsxpdmrg95cpxvmlZ /]# find / -name tomcat

/usr/local/tomcat
/etc/logrotate.d/tomcat
/etc/selinux/targeted/active/modules/100/tomcat
/etc/rc.d/init.d/tomcat

显然我们目的是在从目录开始去寻找 tomcat 目录

字符串处理

管道 |

这个命令大家应该很常见,他是 Linux 里面管道,用于连接两个或者多个命令,具体表现为上一个命令的输出内容作为下个命令的输入内容。

例子

[root@iZm5eixsxpdmrg95cpxvmlZ /]# ps aux| grep tomcat


root      2292  0.0  0.0 112712   956 pts/0    R+   11:29   0:00 grep --color tomcat
www       6514  0.1 32.8 2993956 618504 ?      Sl    2019  45:28 /usr/java/jdk1.8.0_231/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx919m -Dfile.encoding=UTF-8 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Djava.library.path=/usr/local/apr/lib -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

搜索文本 grep

该命令用于匹配字符串,相当于我们常用的 Ctrl+f.

grep  匹配内容 文件名

例子

[root@iZm5eixsxpdmrg95cpxvmlZ /]# grep asda test.txt

asda

排序 sort

sort [-ntkr] 文件名

其中:
n:数字排序
t:指定分隔符
k:指定一第几列为标准排序,常与 t 一起使用
r:逆序

例子:

[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt 

a:2
s:6
d:1
a:0


[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt | sort 

a:0
a:2
d:1
s:6


[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt | sort -t ":" -k 2 

a:0
d:1
a:2
s:6


[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt | sort -t ":" -k 2 -r
s:6
a:2
d:1
a:0

计算重复 uniq

uniq [-ic]

# -i 忽略大小写
# -c 计算重复行数

常与 sort 使用

[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt 

a:2 a a d
s:6 a V
d:1   a
a:0
a:0
a:0


[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt | uniq

a:2 a a d
s:6 a V
d:1   a
a:0


[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt | uniq -c

      1 a:2 a a d
      1 s:6 a V
      1 d:1   a
      3 a:0
      
      
[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt| sort | uniq -c

      3 a:0
      1 a:2 a a d
      1 d:1   a
      1 s:6 a V

进程

瞬间状态 ps

该命令用于查看某一时刻的进程状态

ps 参数
#-A 列出所有的进程,和-e一样
#aux 显示所有的包含其他使用者的进程

查看tomcat进程是否存在

[root@iZm5eixsxpdmrg95cpxvmlZ /]# ps aux | grep tomcat


www       6514  0.1 32.8 2993956 618504 ?      Sl    2019  47:29 /usr/java/jdk1.8.0_231/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx919m -Dfile.encoding=UTF-8 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Djava.library.path=/usr/local/apr/lib -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root     32062  0.0  0.0 112712   952 pts/0    R+   17:46   0:00 grep --color tomcat

实时状态 top

该命令用于查看cpu实时运行状态,内存空间

通过pid终止进程 kill

通过名称终止进程 killall

killall 命令比较安全,可以输出进程名称终止,避免输错数字pid

端口占用 lsof

改命令查看端口是否被占用

[root@iZm5eixsxpdmrg95cpxvmlZ /]# lsof -i:3306

COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
mysqld  5437 mysql   30u  IPv4    94759      0t0  TCP *:mysql (LISTEN)

vim 编辑器

vim编辑器是Linux的文本编辑器,相当window的记事本。

查找关键字 /

在vim里面我们使用 / 关键字 查找关键字

退出

使用 esc:wq 组合保存退出vim

文本处理工具 awk

awk 默认以空格划分域(列数),因此我们可以通过 awk 打印特定的列

[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt 

a:2 a a d
s:6 a V
d:1   a
a:0
a:0
a:0


[root@iZm5eixsxpdmrg95cpxvmlZ /]# awk '{print $1}' test.txt 

a:2
s:6
d:1
a:0
a:0
a:0

指定分割 -F 分隔符

如果我们不需要空格分割,可以指定其他

[root@iZm5eixsxpdmrg95cpxvmlZ /]# cat test.txt 

a:2 a a d
s:6 a V
d:1   a
a:0
a:0
a:0


[root@iZm5eixsxpdmrg95cpxvmlZ /]# awk -F : '{print $1}' test.txt 

a
s
d
a
a
a

关注微信公众号,随时移动端阅读

Q3Aj6z3.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK