Linux学习:运行级别、目录结构、常用命令

Linux

命令行模式常用快捷键

  • Tab:自动补全命令
  • Shift+PgUp/PgDn:向上翻页/向下翻页
  • Ctrl+c:停止当前程序

Linux系统运行级别

查看当前系统的运行级别命令:runlevel

[root@lena /]# runlevel
N 3		# 返回"前一个运行级别 当前运行界别" 其中N表示无

Linux运行级别的文件存放在/etc/rc.d/目录下:可以看到由rc0-rc6,共有7个运行级别。

[root@lena /]# cd /etc/rc.d/
[root@lena rc.d]# ll
total 36
drwxr-xr-x. 2 root root 4096 May  6 21:28 init.d
drwxr-xr-x. 2 root root 4096 May  6 21:28 rc0.d
drwxr-xr-x. 2 root root 4096 May  6 21:28 rc1.d
drwxr-xr-x. 2 root root 4096 May 12 12:42 rc2.d
drwxr-xr-x. 2 root root 4096 May 12 12:42 rc3.d
drwxr-xr-x. 2 root root 4096 May 12 12:42 rc4.d
drwxr-xr-x. 2 root root 4096 May 12 12:42 rc5.d
drwxr-xr-x. 2 root root 4096 May  6 21:28 rc6.d
-rw-r--r--  1 root root  473 May 26  2017 rc.local

Linux7个运行级别区别如下:

  • 运行级别0:系统停机(关机)状态。若将0设为默认运行级别,则不能正常启动。

  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆。

  • 运行级别2:多用户状态,无NFS。

    NFS:网络文件系统,是UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

  • 运行级别3:完全的多用户状态,有NFS。登录后进入控制台命令行模式

  • 运行级别4:未使用,保留级别。

  • 运行级别5: 图形化模式,登陆后进入图形GUI模式 。

  • 运行级别6: 重启模式。若将6设为默认运行级别,则不能正常启动,会陷入一直开机重启开机重启的循环中。

当前运行级别切换:init N,例如输入init 0,系统会关机;init 6,系统会自动重启;init 5,系统会进入图形GUI模式 …(注意,该切换是临时的)

init进程ID为1,是初始化进程,查看进程:ps -ef|grep init

初始化进程存在一个对应的配置文件:/etc/inittab(系统配置文件),文件主要内容如:id:5:initdefault:

上面使用init N命令的切换是临时的,重启后会恢复到默认值,若想要永久切换运行级别,需要修改文件/etc/inittab中的initdefault的值。修改默认运行级别:vim /etc/inittab

Linux文件目录结构

  1. bin:是usr/bin的快捷方式。存储二进制文件,都是可以被运行的文件。存储着最常使用的命令。
  2. boot:存放启动Linux使用的核心文件(连接文件、镜像文件)
  3. dev:主要存放外界设备(u盘、光盘…)不能直接被使用,需要挂载。在Linux中一切皆文件,访问设备和文件的方式一样。
  4. etc:主要 存放所有的系统管理所需要的配置文件和子目录。
  5. home:除了root用户外的其他用户的家目录。
  6. lib:存放着系统最基本的动态连接共享库
  7. lost+found:用于非法关机后存放文件。默认情况是空的。
  8. media:Linux自动识别设备会挂载到该目录下。
  9. mnt:当外接设备需要临时挂载的时候,挂载在该目录下。
  10. opt:用来主机额外安装的软件。默认是空的。(optional)
  11. proc:存储Linux运行时的进程, 是一个虚拟的目录,它是系统内存的映射。(process)
  12. root:root用户的家目录。
  13. run:临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。 若有/var/run目录,应该指向该目录。
  14. sbin:是usr/sbin的快捷方式。存储具有super权限才能执行的二进制文件,如halt、shutdown关机。(super bin)
  15. srv:该目录存放一些服务启动之后需要提取的数据。
  16. tmp:存放产生的临时文件,系统使用完会删除。(temporary)
  17. usr:存放用户自己安装的软件。
  18. var:存放程序/系统的日志文件。

Linux文件与权限

在Linux中,一切皆文件。

访问文件的身份

对一个文件来说,访问文件的一般有四种身份:

  1. Owner身份(文件所有者):默认是文件的创建者。可以更改。
  2. Group身份(与文件所有者同组的用户):当同一团队多人在同一台主机上开发的时候,可以将同一组的人员的用户设为同一组。
  3. Others身份(其他人):既不是文件所有者,也不是与所有者同组的用户。
  4. Root用户(超级管理员):拥有最大权限。

文件权限

查看文件权限

我们可以使用ll或者ls –l命令来查看一个文件的属性以及文件所属的用户和组。查看到的文件信息会按列显示,前十个字符依次描述了文件的类型、文件所属者的权限、文件所属组的权限、其他用户的权限,具体字符的含义如下:

  1. 表明这个文件的类型,其中每个字符的含义是:“d”目录;“-”文件;“l”链接文档;“b”可随机存取装置;“c”一次性读取装置(鼠标、键盘)

  2. 文件所属者的读权限

  3. 文件所属者的写权限

  4. 文件所属者的执行权限

  5. 文件所属组的读权限

  6. 文件所属组的写权限

  7. 文件所属组的执行权限

  8. 其他用户的读权限

  9. 其他用户的写权限

  10. 其他用户的执行权限

以上1-3表示文件所有者的权限,4-6表示文件同组用户的权限,7-9表示其他用户的权限。若有读权限,则使用“r”字符表示;若有写权限,则用“w”字符表示;若有执行权限,则用“x”字符表示;如无权限,则用“-”表示。

例如:drwxr-xr-x表示了文件是文件夹,文件所有者有读写执行权限,文件同组用户和其他用户只有读和执行权限。

设置文件权限

设置文件权限,使用命令:chown 选项 文件所有者权限+文件所有者所属组权限+其他用户权限 文件

1.数字形式

没有任何权限=0;读权限=4;写权限=2;执行权限=1

由此可以得到0-7数值分别对应的权限:

数值 可读=4 可写=2 可执行=1 目录列表
0
1 –x
2 -w-
3 -wx
4 r–
5 r-x
6 rw-
7 rwx

例如:给文件a.txt设置权限,文件所有者拥有全部权限(4+2+1=7),文件所有者同组用户拥有读和执行权限(4+1=5),其他用户只能读文件(4),那么设置文件权限的命令为 chmod 754 a.txt

2.字母形式

指定设置的身份:

  • u:表示文件所有者(Owner身份)
  • g:表示文件所有者同组用户(Group身份)
  • o:表示其他用户(Others身份)
  • a:表示所有身份(即=u、g、o)

指明要设置的权限:

  • r:表示可读,read
  • w:表示可写,write
  • x:表示可执行,execute
  • -:表示没有权限

例如:给文件a.txt(-rw-------)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只有读权限,可使用命令设置 chmod u=rwx,g=rx,o=r a.txt

此外,还可以用命令指明要更改的部分,如 chmod u+x,g+rx,o+r a.txt

去除文件所有权限:chmod a=--- 文件

为所有文件设置读权限:chmod a+r 文件

文件属性

使用ll或者ls –l命令时,会按列显示文件的信息,显示的内容格式为:文件类型权限 硬链接数量 文件所有者 文件所有者所在组 文件大小 最后一次更改时间 文件名

[root@lena /]# ll
lrwxrwxrwx.  1 root root         7 Aug 18  2017 bin -> usr/bin
dr-xr-xr-x.  4 root root      4096 May 27 16:01 boot
-rw-r--r--   1 root root 144935989 Jun  2 10:32 jdk-8u291-linux-x64.tar.gz
lrwxrwxrwx.  1 root root         7 Aug 18  2017 lib -> usr/lib
lrwxrwxrwx.  1 root root         9 Aug 18  2017 lib64 -> usr/lib64
drwx------.  2 root root     16384 Aug 18  2017 lost+found
drwxr-xr-x.  2 root root      4096 Nov  5  2016 media

修改文件属性

更改文件所有者:chown [-R] 用户名 文件

更改文件的所属用户组:chgrp [-R] 所属用户组 文件

同时更改文件的所有者和所属组:chown -R 文件所有者:所属用户组 文件

其中,当文件是目录的时候,选项-R会迭代更改该目录下的所有文件。


Linux命令

完整的命令标准格式:命令 [选项] [操作对象]

  • 若不写操作对象,默认当前对象
  • 一个命令可以有多个选项、多个操作对象,但只能有一个命令

man

man 命令:查看Linux命令的手册,英文显示,不需要联网。

退出按下q键

文件与目录管理

ls 列出目录

ls:列出当前工作目录下的所有文件/文件夹名称

[root@lena /]# ls
bin   dev  home                        lib    lost+found  mnt  proc  run    sbin  sys  usr
boot  etc  jdk-8u291-linux-x64.tar.gz  lib64  media       opt  root  samba  srv   tmp  var

ls 选项 路径:以指定格式显示指定路径下的目录信息

  • 路径可以是绝对路径或相对路径
  • 选项-l:以详细列表的形式进行展示,list
  • 选项-a:显示所有文件/文件夹,包括隐藏的文件/文件夹
  • 选项-h:显示文档的时候按可读性较高的形式显示,即自动切换文件大小时显示的单位
  • 选项-d:仅列出当前目录的信息,而不是目录内的文件信息
[root@lena /]# ls -lh
lrwxrwxrwx.  1 root root    7 Aug 18  2017 bin -> usr/bin
dr-xr-xr-x.  4 root root 4.0K May 27 16:01 boot
drwxr-xr-x. 89 root root  12K Oct 23 20:34 etc
-rw-r--r--   1 root root 139M Jun  2 10:32 jdk-8u291-linux-x64.tar.gz

pwd 显示当前工作目录

选项-P:显示出实际路径,而非使用连接(link)路径

[root@lena bin]# pwd
/bin
[root@lena bin]# pwd -P
/usr/bin

cd 切换目录

cd [绝对路径/相对路径]:切换当前工作目录

绝对路径:“.”表示当前路径;“…”表示上一级目录。

“~”符号在Linux中表示家目录,命令cd ~cd一样,都会切换到家目录。

mkdir 创建新目录

mkdir 选项 目录:创建新的文件夹,make directory

  • 选项-m:配置文件权限
  • 选项-p:若创建目录路径上有多个不存在的目录,递归创建多层目录
[root@lena ~]# mkdir -m 761 linux
[root@lena ~]# ll
drwxrw---x 2 root root 4096 Oct 25 13:33 linux

可以一次性创建多个目录:mkdir 目录1 目录2 目录3

touch 创建文件

touch 文件:创建文件

可以一次性创建多个文件:touch 文件1 文件2 文件3

[root@lena linux]# mkdir directory
[root@lena linux]# touch file1 file2
[root@lena linux]# ll
total 4
drwxr-xr-x 2 root root 4096 Oct 25 13:48 directory
-rw-r--r-- 1 root root    0 Oct 25 13:48 file1
-rw-r--r-- 1 root root    0 Oct 25 13:48 file2

rmdir 删除空目录

rmdir [-p] 目录:选项-p表示,从该目录起,一次删除多级空目录

注意:若文件夹有内容,则无法删除。

[root@lena linux]# rmdir directory
rmdir: failed to remove ‘directory’: Directory not empty

rm 删除文件或目录

rm 选项 文件或目录

  • 选项-f:若文件或目录不存在,则忽略,不显示警告
  • 选项-i:互动模式,在删除前会进行询问
  • 选项-r:递归删除指定目录及下所有文件
[root@lena linux]# ls
directory  file1  file2
[root@lena linux]# rm -f file3 	#删除不存在的文件
[root@lena linux]# rm file3 		#删除不存在的文件
rm: cannot remove ‘file3’: No such file or directory
[root@lena linux]# rm -i file2	#删除时进行提示
rm: remove regular empty file ‘file2’? n
[root@lena linux]# ls
directory  file1  file2

mv 移动文件

mv 需要移动的文件路径 新文件路径,当同一路径不同文件名,也就实现了文件重命名的效果。

  • 选项-f:若新文件名已经在路径中存在,不会询问直接覆盖。
  • 选项-i:若新文件名已经存在,会询问是否覆盖。
  • 选项-u:若目标文件已经存在, 且移动文件比较新,才会覆盖。
[root@lena linux]# ls
directory  file1  file2
[root@lena linux]# mv file1 file3
[root@lena linux]# ls
directory  file2  file3
[root@lena linux]# mv -i file2 file3
mv: overwrite ‘file3’? y
[root@lena linux]# ls
directory  file3

cp 复制文件或目录

cp 选项 源文件 指定路径:复制原文件到指定路径。

  • 选项-r:递归复制,若复制的是文件夹,必须写。
  • 选项-p:复制文件的时候将文件属性也复制过去,不使用默认属性(备份)
  • 选项-d: 若来源档为连结档的属性(link file),则复制连结档属性而非文件本身。
  • 选项-a:等价于选项r+p+d
  • 选项-i:若指定路径已经存在同名文件,则复制覆盖前先询问
  • 选项-s: 复制成为符号连结档 (symbolic link),即捷径文件
  • 选项-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;

软链接:ln -s 源文件 目标文件

硬链接:ln 源文件 目标文件

软连接硬连接参考文档:https://blog.csdn.net/gao_zhennan/article/details/79127232

find 查找文件

find 查询路径范围 选项 选项值:可以用于查询隐藏文件、隐藏文件夹

  • 选项-name:按文档的名称进行搜索,支持模糊查询
  • 选项-type:按照文档类型进程搜索,其中“-”表示文件,“d”表示文件夹
[root@lena ~]# find ~ -name *2.java
/root/linlena/apache-tomcat-7.0.109/webapps/examples/WEBINF/classes/async/Async2.java
/root/linlena/apache-tomcat-7.0.109/webapps/examples/WEBINF/jsp/applet/Clock2.java
/root/linlena/apache-tomcat7.0.109/webapps/examples/jsp/plugin/applet/Clock2.java
[root@lena ~]# find ~/linux -type d
/root/linux
/root/linux/directory

查看文件内容

cat 显示文件所有内容

cat 选项 文件:读取文件后输出文件全部内容

  • 选项-b:列出行号,行号只对非空白行显示,空白行不标
  • 选项-n:列出行号,空白行也显示
  • 选项-E:将文件中每行的断行字节$显示出来
  • 选项-T:将文件中tab键以^I显示处理
  • 选项-v:显示文件中的^M去除^M
  • 选项-A:相当于-v+E+T
[root@lena linux]# cat -b file1
     1	i am file1

     2		hello
[root@lena linux]# 
[root@lena linux]# cat -E file1
i am file1$
$
hello$
[root@lena linux]# cat -T file1
i am file1

hello

tac 倒序显示文件

tac 文件:倒序显示并不是所有内容都倒着显示,而是从最后一行向第一行显示,但每一行内的内容是正序的。

[root@lena linux]# cat file1
i am file1

	hello
*$!@%#^$#^#!#!@
[root@lena linux]# tac file1
*$!@%#^$#^#!#!@
	hello

i am file1

more 按页查看文件

more 文件:一页页翻动,可以通过下面的按键操作

  • 空白键:下一页

  • Enter:下一行

  • /字符串:向下搜索该字符串

  • q:退出more

  • b:往回翻页

  • :f :显示文件名 和当前所在行数

less 按页查看文件

less 文件:一页页翻动查看文件

  • 空白键/PgDn:下一页
  • PgUp:上一页
  • 数字+回车:从数字的那一行开始显示
  • /字符串:向下搜索该字符串
  • ?字符串:向上搜索该字符串
  • n:重复上一个搜索
  • N:反向重复前一个搜索
  • q:退出less

head 显示文件前几行

head [-n 数字] 文件:显示文件的前几行

[root@lena weblog]# head -n 7 nohup.out

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

tail 显示文件后几行

tail [-n 数字][-f] 文件:显示文件后几行

若使用选项-f,会继续监控文件,当文件有追加的内容就继续显示出来。


用户管理

用户操作命令,除了设置密码(passwd)以外,只有超级管理员root有权限。

etc/passwd:存储用户的关键信息

etc/shadow:存储用户的密码信息

id 查看用户信息

id:查看一个用户的一些基本信息(包含用户ID、用户组ID、附加组ID…),该指令如果不指定用户则默认当前用户。

id 用户名:查看指定用户的基本信息

[root@lena ~]# id
uid=0(root) gid=0(root) groups=0(root)

whoami 显示当前登录的用户名

whoami:一般用于shell脚本,获取当前操作的用户名来记录日志

[root@lena ~]# whoami
root

useradd 添加用户

useradd 选项 用户名:添加用户

  • 选项-c:添加注释描述
  • 选项-d:指定用户主目录,若目录不存在可使用选项-m创建主目录
  • 选项-g:指定用户所属的用户组
  • 选项-G:指定用户所属的附加组
  • 选项-s:指定用户登录shell
  • 选项-u:指定用户号,若要重复其他用户的表示号,可使用选项-o。系统默认会从500之后按顺序分配uid。

验证是否添加成功:

  1. 查看文件/etc/passwd最后一行(可以使用命令tail -1 /etc/passwdcat /etc/passwd),查看是否有新添加的用户信息。

    passwd文件存储的信息格式是:用户名:密码:用户ID:用户组ID:注释:家目录:解释器Shell

    • 密码位一般是"x"占位,若设置了密码则是以加密存储的。
    • 若不指定用户组,则会自动创建以当前用户为名的用户组。
    • 注释:解释该用户的作用
    • 家目录:用户登录系统后默认的位置
    • 解释器shell:等用户进入系统,输入指令后,该解释器会收集用户输入的指令,传递给内核处理。
    • 查看用户的附加组可以查看group文件。
  2. 创建用户后会自动创建同名家目录,若没有指定,会在home目录下,可以查看是否存在该用户的家目录。

userdel 删除用户

userdel [-r] 用户名:删除用户账号

选项-r:将用户的主目录随用户一起删除。

已经登录的用户无法删除,只能杀死该用户所有进程后再删除。

  1. 查看用户进程pid:ps -ef|grep 用户名
  2. 杀死进程:kill pid
  3. 删除用户:userdel [-r] 用户名

usermod 修改用户

usermod 选项 用户名:修改用户的有关属性,如用户号、主目录、用户组、登录Shell等。 常用选项与useradd一样。

修改用户名:usermod -l 新名字 就名字

passwd 修改用户密码/口令

passwd 选项 用户名: 用户账号刚创建时没有密码,而Linux不允许没有密码的用户登录到系统,所有没有密码就为锁定状态,无法使用,必须为其指定密码后才可以使用,即使是指定空口令。

  • 选项-l:锁定口令,即禁用账号
  • 选项-u:口令解锁
  • 选项-d:使账号无口令
  • 选项-f:强迫用户下次登录时修改口令

su 切换用户

su [用户名]:切换到指定的用户名

如果不指定用户名,则表示要切换到root用户。


用户组管理

  • 每个用户都有一个月用户组,系统可以对一个用户组中的所有用户进行集中管理。

    不同Linux系统对用户组的规定有所不同,如Linux下的用户属于它同名的用户组,这个用户组在创建用户时同时创建。

  • 用户组的管理涉及用户组的添加、删除和修改。

    用户组的添加、删除、修改实际上就是对/etc/group文件的更新。

group文件存储信息的格式:用户组名:密码:用户组ID:组内用户名

  • 大部分下不会设置密码,无意义,X表示占位符。
  • 若组内用户有多个,则用多个逗号分隔用户名。

groupadd 添加新的用户组

groupadd 选项 用户组:添加新的用户组

  • 选项-g GID:指定GID
  • 选项-o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

验证:查看group文件是否添加成功,命令tail -1 /etc/group

groupdel 删除用户组

groupdel group1:删除用户组

若要删除的用户组是某个用户的主组,那需要先将组内用户移除,再删除:

  • 方法1 修改主组:usermod -g 新主组 用户名
  • 方法2 删除用户:userdel -r 用户名

groupmod 修改用户组

groupmod 选项 用户组:更该用户组

选项-g、-o与groupadd一样。

选项-n 新用户组名:重命名用户组。

newgrp 切换用户的用户组

newgrp 用户组:如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

前提条件是要切换的用户组确实是该用户的主组或附加组 。


### 时间日期

date 日期时间

  • date:输出当前年月日 时间

    [root@lena ~]# date
    Wed Oct 27 13:12:13 CST 2021
    
  • date "+%F"等价于date "+%Y-%m-%d",输出格式:2021-10-27

  • date "+%F %T"等价于date "+%Y-%m-%d $H:%M:%s",输出格【】式:2021-10-27 13:02:04

  • date -d "操作符数字 单位" 日期格式:获取之前或之后某个时间

    • 操作符可选:+(之后)或-(之前)
    • 单位值可选:day(天)、month(月)、year(年)
    • 例如:date -d "-1 day" "+%Y-%m-%d $H:%M:%s",输出结果是:2021-10-26 13:02:04

cal 日历

  • cal等价于cal -l:直接输出当前月份的日历

    [root@lena ~]# cal -1
        October 2021    
    Su Mo Tu We Th Fr Sa
                    1  2
     3  4  5  6  7  8  9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30	# 在Linux中27号(即当天)是会有不同的背景色
    31
    
  • cal -3:输出上一个月+本月+下一个月的日志

    [root@lena ~]# cal -3
       September 2021         October 2021          November 2021   
    Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
              1  2  3  4                  1  2      1  2  3  4  5  6
     5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13
    12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20
    19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27
    26 27 28 29 30        24 25 26 27 28 29 30  28 29 30            
                          31    
    
  • cal -y 年份:输出某一年份的日历

  • cal -s:默认值,日历的显示以星期日为第一天

  • cal -m:日历中以星期一为第一天

    [root@lena ~]# cal -m
        October 2021    
    Mo Tu We Th Fr Sa Su
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
    

ntp服务

主要用于对计算机的时间同步管理。

同步服务器时间的方式:一次性同步(手动同步)、通过服务自动同步

  1. 一次性同步时间:ntpdate 时间服务器域名或IP地址,同步指定ip地址的时间

    IP地址查看可以访问:http://www.ntp.org.cn/pool

  2. 设置时间同步服务ntpd

    • 启动ntpd服务:service ntpd start/etc/init.d/ntpd start
    • 设置ntpd服务开机启动:chkconfig --level 35 ntpd on,查看是否设置成功:chkconfig --list|grep ntpd

进程管理

ps 查看服务器进程信息

  • 选项-e:等价于-A,表示列出全部进程
  • 选项-f:显示全部的列(显示全字段)

返回列格式:UID PID PPID C STIME TTY TIME CMD

  • UID:用户ID
  • PID:进程ID
  • PPID:父进程ID。若没有,则为僵尸进程
  • C:CPU占用率,单位是%
  • STIME:启动时间
  • TTY:终端设备,发起该进程的设备标识符。若显示?则表示该进程不是由终端设备发起的。
  • TIME:进程的执行时间
  • CMD:进程名称或对应路径
[root@lena ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         2     0  0 May27 ?        00:00:00 [kthreadd]
root         3     2  0 May27 ?        00:03:36 [ksoftirqd/0]
root         5     2  0 May27 ?        00:00:00 [kworker/0:0H]
root         7     2  0 May27 ?        00:00:00 [migration/0]
root         8     2  0 May27 ?        00:00:00 [rcu_bh]
......

ps -ef|grep 进程名:能够根据进程名称模糊查询出进程。

  • 至少会查询出一个进程,因为查询指令也是一个进程
  • 正常情况下应该返回两个及以上进程
[root@lena ~]# ps -ef|grep java
root      8047     1  0 Sep05 ?        00:49:40 java -jar weblog2104-0.0.1-SNAPSHOT.jar
root     20908 20856  0 14:39 pts/0    00:00:00 grep --color=auto java
root     23632     1  0 Jul02 ?        01:53:15 java -jar api-0.0.1-SNAPSHOT.jar

top 动态显示进程占用资源

top:输入命令,会进入一个动态的页面。按下q键退出。

返回列格式:PID USER PR NI VIRT RES SHR S %CPU %MEN TIME+ COMMAND

  • PID:进程ID
  • USER:该进程用户
  • PR:优先级
  • VIRT:虚拟内存
  • RES:常驻内存
  • SHR:共享内存
  • S:进程的状态,其中S表示睡眠,R表示运行
  • %CPU:CPU占用百分比
  • %MEN:内存占用百分比
  • TIME+:执行时间
  • COMMAND:进程的名称或路径

有些进程启动需要依赖其他进程,计算一个进程实际使用内存=RES-SHR

[root@lena ~]# top
top - 14:33:57 up 152 days, 22:32,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1883724 total,   105012 free,  1026880 used,   751832 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   586784 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
29574 root      10 -10  131144  15560   9796 S  0.7  0.8 278:02.45 AliYunDun                  
18827 root      20   0 1080768  45964  14568 S  0.3  2.4  15:51.72 containerd                 
25824 root      20   0   17876   1864   1332 S  0.3  0.1   6:12.68 assist_daemon              
    1 root      20   0  125196   3400   2096 S  0.0  0.2   1:15.68 systemd                    
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.03 kthreadd                   
    3 root      20   0       0      0      0 S  0.0  0.0   3:36.99 ksoftirqd/0                
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H               
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0      
.......

在运行top时,可以使用方便的快捷键进行查询:

  • M:表示将结果按照内存(MEN)从高到低排序
  • P:表示将结果按照CPU使用率从高到低排序
  • 1(数字):当服务器拥有多个CPU,使用该快捷键来切换是否展示各个CPU的详细信息(默认显示cpus,按下后能切换到cpu0,cpu1…)

service 启动/停止/重启服务

service 服务名 start/stop/restart:启动/停止/重启服务

例如:service httpd start启动apache,服务名是http

kill 杀死进程

kill PID:杀死指定PID的进程。需要提前得知进程的PID(ps -ef|grep 进程,第二列为PID)

使用场景:遇到僵尸进程或处于某些原因需要关闭进程时。

验证是否杀死进程:ps -ef|grep 服务名,查看进程是否还存在

killall 杀死进程

kill 进程名称:通过进程名称直接杀死进程。


服务器相关命令

hostname 主机名

hostname:输出完整的主机名

hostname -f:输出当前主机名中的FQDN(全限定域名)

hostname 主机名:设置临时主机名

永久设置主机名,要在配置文件/etc/sysconfig/network文件中设置:

HOSTNAME=localhost.localdomain	# 默认主机名

ifconfig 获取网卡信息

ifconfig:获取网卡信息

返回eth0表示Linux中的一个网卡,eth0是名称;

lo(loop)是本地回环网卡,其地址一般是127.0.0.1,也是一个网卡名称。

inet addr是网卡ip地址。

[root@lena ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:7a:30:0b:8a  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.24.8.69  netmask 255.255.192.0  broadcast 172.24.63.255
        ether 00:16:3e:36:68:4e  txqueuelen 1000  (Ethernet)
        RX packets 23729111  bytes 5536748394 (5.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21559102  bytes 10642223762 (9.9 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

uptime 计算机持续在线时间

输出计算机从开机到现在持续在线时间:

[root@lena ~]# uptime
 15:09:18 up 152 days, 23:08,  1 user,  load average: 0.00, 0.01, 0.05

返回信息:当前时间 up 持续时间, 同时连接用户, load average: 最近1min负载,最近5min负载,最近10min负载,查看负载也可以使用top命令。

uname 获取操作系统相关信息

uname:获取操作系统类型

uname -a:获取操作系统全部信息(类型、全部主机名、内核版本、发布时间、开源计划)

[root@lena ~]# uname
Linux
[root@lena ~]# uname -a
Linux lena 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

chkconfig 管理开机启动项

chkconfig --list:开机启动项查询

每一个服务后0-6代表了在运行级别0-6服务对应启动/关闭:

[root@lena ~]# chkconfig --list
aegis          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off

chkconfig --del 服务名:删除服务

​ 查询是否删除成功:chkconfig --list|grep 服务名

chkconfig --add 服务名:添加开机启动服务

chkconfig --level 运行级别 服务名 on/off:设置服务在某个运行级别下开机启动

​ 运行级别可以一次指定多个,例如chkconfig --level 35 httpd on


网络网关

网卡配置文件

网卡配置文件位置:/etc/sysconfig/network-scripts/

​ 配置文件的命名格式:ifcgf-网卡名称

​ 查看配置文件信息:cat /etc/sysconfig/network-scripts/ifcgf-网卡名称

​ ONBOOT:是否开机启动(yes/no)

​ BOOTPROTO:IP地址分配方式,DCHP表示动态主机分配协议

​ HWADDR:硬件地址,MAC地址

重启网卡

  1. service network restart:并不是所有地方可用,在centos有的分支版本中可能没有service命令来快速操作服务,但有个公共目录/etc/init.d,因此可用方法二。
  2. /etc/init.d/netword restart:适用范围广

重启单个网卡

  • 停止某个网卡:ifdown 网卡名称
  • 开启某个网卡:ifup 网卡名称

查看是否成功:ifconfig

netstat 查看网络链接状态

netstat [选项]

  • 选项-t:表示只列出tcp协议的连接
  • 选项-n:原本显示的是"地址英文名:协议名",添加选项后显示"IP地址:端口号"
  • 选项-l:表示过滤出"state状态"列中值为Listen(监听)的链接(该状态才有意义)
  • 选项-p:显示进程的PID和进程名称
  • 选项-a:表示查看全部
[root@lena ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      23632/java          
tcp        0      0 0.0.0.0:9101            0.0.0.0:*               LISTEN      8047/java           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2563/sshd           
tcp6       0      0 :::3306                 :::*                    LISTEN      2645/mysqld         

ping

ping 主机地址/域名/主机名:检测当前主机与目的主机之间的连通性

由于有的服务器是禁ping,因此不是100%准确。

windows默认发送4个数据报,若想一直发送可以在命令尾加上-t

Linux默认一直发送,直到手动停止。

[root@lena ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=50 time=15.1 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=50 time=15.1 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=6 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=7 ttl=50 time=15.2 ms

traceroute

traceroute 主机地址:查找当前主机与目标主机之间所有的网关。

类似windows的命令tracert 主机地址

原理:会给经过的路由器都发送ICMP数据报,但有可能收不到回应。

注意:该命令不是内置命令,需要安装。

arp 地址解析表

arp -a:查看本地缓存MAC表

arp -d 主机地址:删除指定的缓存记录(IP与MAC对应的记录)

tcpdump 抓取数据包

tcpdump 协议 port 端口:监听端口

tcpdump 协议 port 端口 host 地址

tcpdump -i 网卡设备名


关机重启

shutdown 关机

  1. 查看该命令的帮助文档:man shutdown
      shutdown may be used to halt, power-off or reboot the machine.

  The first argument may be a time string (which is usually "now"). Optionally, this may be followed by a wall message to be sent to all logged-in users before going down.

  The time string may either be in the format "hh:mm" for hour/minutes specifying the time to execute the shutdown at, specified in 24h clock format. Alternatively it may be in the syntax "+m" referring to the specified number of minutes m from now.  "now" is an alias for "+0", i.e. for triggering an immediate shutdown. If no time argument is specified, "+1" is implied.

  Note that to specify a wall message you must specify a time argument, too.
  If the time argument is used, 5 minutes before the system goes down the /run/nologin
  file is created to ensure that further logins shall not be allowed.

翻译:
关机可用于停止、关闭电源或重新启动机器。

第一个参数可能是时间字符串(通常是“now”)。或者,这个之后可能会有一条墙消息,发送给所有登录的用户,然后再继续向下.

时间字符串的格式可以是“hh:mm”,表示小时/分钟,用于指定时间以24小时时钟格式指定的在执行停机的时间。或者也可以语法为“+m”,表示从现在起指定的分钟m。“now”是“+0”的别名,即用于触发立即停机。如果没有时间参数已指定,“+1”是隐含的。

请注意,要指定墙消息,还必须指定时间参数。
如果使用time参数,则在系统关闭/run/nologin之前5分钟创建文件以确保不允许进一步登录。

  1. 马上关机:shutdown -h now
  2. 十分钟后关机:shutdown -h 10
  3. 十分钟后关机并提醒当前登录用户:shutdown -h 10 'tip : shutdown after 10 min'
  4. 当天21点关机:shutdown -h 21:00
  5. 马上重启:shutdown -r now
  6. 十分钟后重启:shutdown -r +10
  7. 取消关机:shutdown -c

halt 关闭内存

halt命令,关闭内存(因为没有内存无法开机,所以也起到关机作用)

  1. 停止机器,仍保持通电:halt
  2. 关闭机器(关闭电源):halt -p
  3. 重启机器:halt --reboot

reboot 重启

  1. 重启机器:reboot
  2. 停止机器:rebbot --halt
  3. 关闭机器:reboot -p
  4. 模拟重启:reboot -w,只写开机/关机日志,但实际不会重启。

poweroff

  1. 关闭机器(关闭电源):powereoff
  2. 停止机器:poweroff --halt
  3. 重启机器:poweroff --reboot

init 0

init 0切换运行级别命令

  • 运行级别为0,系统处于关机状态。
  • 注意:有局限性,在某些版本不可用。

yum

yum [选项] [操作] [安装的包名...]

  • 选项-y:表示安装过程中提示全部为yes
  • 选项-q:表示不显示安装过程
  • 选项-h:获取命令帮助

常用命令:

  • 列出所有可更新的软件:yum check-update
  • 更新所有软件:yum upate
  • 仅安装指定的软件:yum install <软件包名>
  • 仅更新指定的软件:yum update <软件包名>
  • 列出所有可安装软件:yum list
  • 删除软件包:yum remove <软件包名>
  • 查找软件包:yum search <关键词>
  • 清除缓存:
    • 清除缓存目录下的软件包:yum clean packages
    • 清除缓存目录下的headers:yum clean headers
    • 清除缓存目录下的旧headers:yum clean oldheaders
    • 清除缓存目录下的软件包及旧headers:yum cleanyum clean all,也可分步执行。

磁盘管理

df 查看磁盘空间

df [选项] [文件/目录]: 利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  • -a :列出所有的文件
  • -k :以 K显示各文件
  • -m :以 M显示各文件
  • -h :按合适的单位自动显示
  • -H :以 M=1000K 取代 M=1024K 的进位方式
  • -T :显示文件系统类型, 连同该分区的文件系统名称也列出
  • -i :不使用硬盘容量显示,而以 inode 的数量来显示

返回的信息格式为:Filesystem 大小 已使用 未使用 使用百分比 挂载

[root@lena weblog]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       41151808 5036540  34001836  13% /
devtmpfs          931516       0    931516   0% /dev
tmpfs             941860       0    941860   0% /dev/shm
tmpfs             941860   98676    843184  11% /run
tmpfs             941860       0    941860   0% /sys/fs/cgroup
tmpfs             188376       0    188376   0% /run/user/0
[root@lena weblog]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  4.9G   33G  13% /
devtmpfs        910M     0  910M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M   97M  824M  11% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs           184M     0  184M   0% /run/user/0

找出你系统中的根目录所在磁盘:df /

du 查看目录真实大小

du [选项] 文件/目录:查看文件/目录使用情况

  • -a :列出所有的文件与目录容量,默认仅统计目录底下的文件量
  • -h :选择合适单位显示大小
  • -s :列出总量,而不列出每个各别的目录占用容量
  • -S :列出总量,不包括子目录下的
  • -k :以K为单位显示
  • -m :以M为单位显示

查看指定路径共占用了多少内存:

[root@lena ~]# du -sh ~
979M	/root

别名机制

给已有的命令映射一个自定义别名。

别名机制依靠别名映射文件:~/.bashrc

配置步骤:

  1. 打开文件:vim ~/.bashrc
  2. 在文件中添加映射规则,格式:alias 自定义名='原命令'。例如:alias cls='clear'
  3. 保存并推出::x

注意:若想新配置的别名生效,必须重新生路当前用户。


vim文本编辑器

打开文件

  • vim 文件:通过文本编辑器打开指定文件
  • vim +数字 文件:打开指定文件,并将光标移动到指定行
  • vim +/关键词 文件:打开指定文件,并且高亮显示关键词。下一次打开文件的时候若没有规定高亮关键词,则与上一次打开的高亮关键词一致。
  • vim 文件1 文件2 ... 文件n:用vim同时打开多个文件

打开文件后会显示文件的内容,其中~的行,表示该行没有任何东西。

三种模式

Vim有三种模式:命令模式、编辑模式(输入模式)、末行模式。

命令模式

该模式下不能对文件直接编辑,可以键盘敲下快捷键来进行一些操作(删除行、复制行、移动光标、粘贴…),是默认模式。

切换到编辑模式:按下iao

切换到末行模式:输入:

光标移动
  • 光标移动到行首:[shift]+^(6)

  • 光标移动到行尾:[shift]+$(4)

  • 光标移动到文档首行:gg

  • 光标移动到文档末行:G[shift]+G

  • 向上翻屏:[ctrl]+bPgUp

    向下翻屏:[ctrl]+fPgDn

  • 快速将光标移动到指定行:行数G

  • 以当前光标所在行为准,向上/向下移动n行:行数↑/↓

  • 以当前光标所在行为准,向左/向右移动n行:行数←/→

复制操作
  • 复制光标所在行:yy,在想要粘贴的地方按P
  • 复制光标所在行及向下n行:行数yy。例如2yy表示当前行+向下2行,一共3行。
  • 可视化复制(区块复制):ctrl+v,按下↑↓←→选中需要复制的区块,按下yy进行复制,按下esc退出,按下P粘贴。
  • 复制光标所在行:yy
  • 将已经复制的内容粘贴在当前光标的下一行:p
  • 将已经复制的内容粘贴在当前光标的上一行:P
剪切删除
  • 剪切/删除光标所在行:dd,删除后下一行上移。删除后可以按P键进行粘贴操作。
  • 以光标所在行为准,剪切/删除指定行:行数dd,删除后下一行上移。 例如:20dd,则是删除20行。
  • 剪切/删除光标所在行,但删除后下一行不上移,当前行为空白:D
  • 向后删除一个字符:x[del]键
  • 向前删除一个字符:X[backspace]键
撤销/恢复
  • 撤销:输入uU
  • 恢复:ctrl+r,恢复/取消之前的撤销操作
复原/重做
  • 复原前一个动作:u
  • 重做上一个动作:[Ctrl]+r
  • 重复上一个动作:.

编辑模式

在该模式下可以对文件的内容进行编辑。

进入:按下以下的按键即可从命令模式进入编辑模式

  • i:在光标所在字符前开始插入
  • a:在光标所在字符后开始插入
  • o:在光标所在行的下面另起一新行插入
  • I:在光标所在行的行首开始插入,如果行首有空格则在空格之后插入
  • A:在光标所在行的行尾开始插入
  • O:在光标所在行上面另起一行开始插入
  • S:删除光标所在行并开始插入

退出:按[esc]

计算器的使用:不需要退出文件,在vim内计算

  1. 进入编辑模式
  2. 将光标移动到要输入运算结果的地方,按下[ctrl]+R,此时光标会变成’’
  3. 输入=,此时光标变到最后一行
  4. 输入要计算的运算式,按下[Enter],即有结果返回

末行模式

可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮…)

进入:原本是命令模式,按下":""/"即可进入,其中/表示查找,有局限性。

退出:输入操作后回车即可生效

  • :w [路径]:保存文件,若添加了路径则表示另存为指定路径的文件。

  • :q:退出。前提当前文件没有更改,若更改了没有保存会提示。

  • :q!:强制退出,不保存。或ZQ

    !在vim中通常有强制的作用

  • :wq:保存并退出。注意,即使没有修改文件,使用了该命令也会更新文件的修改时间。

  • :x:在没有修改文件的时候,表示直接退出(不更新修改文件的时间);在修改了文件的情况下,保存并退出。

  • :X:表示对文件进行加密,下一次进入文件需要输入密码才能查看、操作文件,但如果没有保存文件,该加密配置不生效。

  • :!外部命令:调用外部命令。一次只能执行一条命令。按Enter或输入其他命令会回到原文件继续操作。

  • 按下esc或删除末行中全部命令(含:

操作

  • :/关键词:搜索/查找关键词,高亮显示

    在搜索结果中切换到上一个/下一个结果,使用N/n

  • :行数:移动到指定行

  • :行数j:向下移动指定行数。等同于:行数↓

  • :nohl:取消高亮显示。no highlight

  • :[%]s/搜索的关键词/新内容[/g]:替换光标所在行的第一个内容,若添加了/g,则替换光标所在行的所有内容。若加了%则表示整个文档,而不只是光标所在行。

  • :set nu:显示行号。仅一次生效,退出后重新进入不再显示。

  • :set nonu:不显示行号。

  • :syntax on:显示代码着色

  • :syntax off:不显示,默认。

使用vim同时打开多个文件,在末行模式下进行文件的切换

  • :files:查看当前vim已经打开的文件

    返回的结果第二列显示的含义:

    1. 空白:不是上一次/当前打开的文件
    2. %a:active,表示当前正在打开的文件
    3. #:表示上一个打开的文件
  • 切换文件的方式:

    • :open 文件名:切换到指定文件。前提,该文件已经打开。不能用[tab]补充文件名。
    • :bn:back next,切换到下一个文件
    • :bp:back previous,切换到上一个文件

vim配置

vim编辑器的配置有两种方式:优先级2>3

  1. 在文件打开的时候,在末行模式下输入配置命令。该方式的配置是临时的。
  2. 修改vim的个人配置文件,位置:~/.vimrc。若没有个人配置文件,可以手动创建,命名一样即可。下次使用该用户打开文件就会使用该配置文件的配置。
    • 新建个人配置文件:touch .vimrc
    • 进入编辑:vim .vimrc
    • 在配置文件中添加配置,例如显示行号:set nu
    • 保存并退出:x
  3. 全局配置文件,vim自带:/etc/vimrc

异常退出

在编辑文件后没有正常保存再推出,而是突然关闭(故障/人为),则会在下一次打开文件的时候显示error

解决:

  1. 查看error中存在的交换文件名。

    交换文件:编辑产生的临时文件,隐藏文件。

  2. 删除交换文件:rm -f 文件

猜你喜欢

转载自blog.csdn.net/lena7/article/details/120996761