当前位置:首页 > 操作系统 > Linux > 正文内容

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

Linux2个月前 (11-22)

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文件目录结构

bin:是usr/bin的快捷方式。存储二进制文件,都是可以被运行的文件。存储着最常使用的命令。

boot:存放启动Linux使用的核心文件(连接文件、镜像文件)

dev:主要存放外界设备(u盘、光盘…)不能直接被使用,需要挂载。在Linux中一切皆文件,访问设备和文件的方式一样。

etc:主要 存放所有的系统管理所需要的配置文件和子目录。

home:除了root用户外的其他用户的家目录。

lib:存放着系统最基本的动态连接共享库

lost+found:用于非法关机后存放文件。默认情况是空的。

media:Linux自动识别设备会挂载到该目录下。

mnt:当外接设备需要临时挂载的时候,挂载在该目录下。

opt:用来主机额外安装的软件。默认是空的。(optional)

proc:存储Linux运行时的进程, 是一个虚拟的目录,它是系统内存的映射。(process)

root:root用户的家目录。

run:临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。 若有/var/run目录,应该指向该目录。

sbin:是usr/sbin的快捷方式。存储具有super权限才能执行的二进制文件,如halt、shutdown关机。(super bin)

srv:该目录存放一些服务启动之后需要提取的数据。

tmp:存放产生的临时文件,系统使用完会删除。(temporary)

usr:存放用户自己安装的软件。

var:存放程序/系统的日志文件。


Linux文件与权限

在Linux中,一切皆文件。


访问文件的身份

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

Owner身份(文件所有者):默认是文件的创建者。可以更改。

Group身份(与文件所有者同组的用户):当同一团队多人在同一台主机上开发的时候,可以将同一组的人员的用户设为同一组。

Others身份(其他人):既不是文件所有者,也不是与所有者同组的用户。

Root用户(超级管理员):拥有最大权限。


文件权限

查看文件权限

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

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

1、文件所属者的读权限

2、文件所属者的写权限

3、文件所属者的执行权限

4、文件所属组的读权限

5、文件所属组的写权限

6、文件所属组的执行权限

7、其他用户的读权限

8、其他用户的写权限

9、其他用户的执行权限

以上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


查看文件内容

cat 显示文件所有内容

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

选项-b:列出行号,行号只对非空白行显示,空白行不标

选项-n:列出行号,空白行也显示

选项-E:将文件中每行的断行字节$显示出来

选项-T:将文件中tab键以^I显示处理

选项-v:显示文件中的^M (去除^M)

选项-A:相当于-v+E+T


[root@lena linux]# cat -b file1

     1i am file1

     2hello

[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。

验证是否添加成功:


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


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


密码位一般是"x"占位,若设置了密码则是以加密存储的。

若不指定用户组,则会自动创建以当前用户为名的用户组。

注释:解释该用户的作用

家目录:用户登录系统后默认的位置

解释器shell:等用户进入系统,输入指令后,该解释器会收集用户输入的指令,传递给内核处理。

查看用户的附加组可以查看group文件。

创建用户后会自动创建同名家目录,若没有指定,会在home目录下,可以查看是否存在该用户的家目录。


userdel 删除用户

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


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


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


查看用户进程pid:ps -ef|grep 用户名

杀死进程:kill pid

删除用户: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服务

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

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

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

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


设置时间同步服务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:off1:off2:on3:on4:on5:on6:off

netconsole     0:off1:off2:off3:off4:off5:off6:off

network        0:off1:off2:on3:on4:on5:on6: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地址


重启网卡

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

/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 关机

查看该命令的帮助文档: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分钟创建文件以确保不允许进一步登录。


马上关机:shutdown -h now

十分钟后关机:shutdown -h 10

十分钟后关机并提醒当前登录用户:shutdown -h 10 'tip : shutdown after 10 min'

当天21点关机:shutdown -h 21:00

马上重启:shutdown -r now

十分钟后重启:shutdown -r +10

取消关机:shutdown -c

halt 关闭内存

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

停止机器,仍保持通电:halt

关闭机器(关闭电源):halt -p

重启机器:halt --reboot


reboot 重启

重启机器:reboot

停止机器:rebbot --halt

关闭机器:reboot -p

模拟重启:reboot -w,只写开机/关机日志,但实际不会重启。

poweroff

关闭机器(关闭电源):powereoff

停止机器:poweroff --halt

重启机器: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 clean或yum 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


配置步骤:

打开文件:vim ~/.bashrc

在文件中添加映射规则,格式:alias 自定义名='原命令'。例如:alias cls='clear'

保存并推出::x

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


vim文本编辑器

打开文件

vim 文件:通过文本编辑器打开指定文件

vim +数字 文件:打开指定文件,并将光标移动到指定行

vim +/关键词 文件:打开指定文件,并且高亮显示关键词。下一次打开文件的时候若没有规定高亮关键词,则与上一次打开的高亮关键词一致。

vim 文件1 文件2 ... 文件n:用vim同时打开多个文件

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


三种模式

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


命令模式

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


切换到编辑模式:按下i或a或o等


切换到末行模式:输入:


光标移动

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

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

光标移动到文档首行:gg

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

向上翻屏:[ctrl]+b或PgUp

向下翻屏:[ctrl]+f或PgDn

快速将光标移动到指定行:行数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]键

撤销/恢复

撤销:输入u或U

恢复:ctrl+r,恢复/取消之前的撤销操作

复原/重做

复原前一个动作:u

重做上一个动作:[Ctrl]+r

重复上一个动作:.

编辑模式

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


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

i:在光标所在字符前开始插入

a:在光标所在字符后开始插入

o:在光标所在行的下面另起一新行插入

I:在光标所在行的行首开始插入,如果行首有空格则在空格之后插入

A:在光标所在行的行尾开始插入

O:在光标所在行上面另起一行开始插入

S:删除光标所在行并开始插入

退出:按[esc]键


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


进入编辑模式

将光标移动到要输入运算结果的地方,按下[ctrl]+R,此时光标会变成’’

输入=,此时光标变到最后一行

输入要计算的运算式,按下[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已经打开的文件


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


空白:不是上一次/当前打开的文件

%a:active,表示当前正在打开的文件

#:表示上一个打开的文件

切换文件的方式:


:open 文件名:切换到指定文件。前提,该文件已经打开。不能用[tab]补充文件名。

:bn:back next,切换到下一个文件

:bp:back previous,切换到上一个文件

vim配置

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


在文件打开的时候,在末行模式下输入配置命令。该方式的配置是临时的。

修改vim的个人配置文件,位置:~/.vimrc。若没有个人配置文件,可以手动创建,命名一样即可。下次使用该用户打开文件就会使用该配置文件的配置。

新建个人配置文件:touch .vimrc

进入编辑:vim .vimrc

在配置文件中添加配置,例如显示行号:set nu

保存并退出:x

全局配置文件,vim自带:/etc/vimrc

异常退出

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


解决:

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

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

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



原文地址:https://blog.csdn.net/lena7/article/details/120996761 


返回列表

上一篇:Linux常见命令

没有最新的文章了...