linux系统指令整理

文章目录

参考:

Linux面试题

【小白入门 通俗易懂】2021韩顺平 一周学会Linux

书目参考:《linux就该这么学》刘遄 著

1、vim编辑器常用命令

  • 一般模式:默认模式

  • 编辑模式:从一般模式下输入任何一个字母可进入该模式,一般输入r

  • 命令模式:从一般模式下输入:或者/ 可进入

在这里插入图片描述
命令模式下常用命令:

  • :w:保存
  • :q:退出
  • :wq:保存退出
  • :q!:强制退出,不保存
  • :set nu:显示行号
  • :set nonu:不显示行号
  • :命令:执行该命令
  • :整数:跳转到该行
  • ?字符串:在文本中从下至上搜索该字符串
  • / 字符串:在文本中从上至下搜索该字符串
  • : s /one /two:将当前光标所在行的第一个one替换成two
  • : s /one /two /g:将当前光标所在行的所有one替换成two
  • : %s /one /two /g:将全文中的所有one替换成two

2、开机、重启

1. halt、shutdown(关机)

halt   # 立刻关机
shutdown -h now  # 立刻关机
shutdown -h 1  # 1分钟后关机

poweroff  # 关闭系统,默认只能使用root管理员才可以关闭电脑

2.reload、shutdown(重启)

reboot  # 立刻重启系统,默认只能使用root管理员来重启
shutdown -r now  # 立刻重启

把内存的数据同步到磁盘中:

sync  # 把内存的数据同步到磁盘中,在关机或者重启前首先要运行该命令

3、系统状态监测命令

1、history指令(查看历史指令)

查看已经执行过的历史命令,也可以执行历史命令

history  # 显示所有的历史命令
history 10  # 显示最近的10条历史命令
!5  # 执行历史编号为5的指令

4、工作目录切换

1、pwd指令(显示当前工作目录的绝对路径)

显示当前工作目录的绝对路径

2、ls命令(显示当前目录下文件)

ls [选项] [目录或者文件]

  • -a : 显示当前目录的所有文件和目录,包括隐藏的

  • -l :以列表的方式显示信息

  • 选项可以组合使用

  • 在Linux下,隐藏文件以 . 开头

ls:只显示文件名字

ll是ls -l的别名,相当于Windows中的快捷方式。

  • 显示当前目录下文件的详细信息
    在这里插入图片描述
  1. 蓝色–>目录

  2. 绿色–>可执行文件

  3. 红色–>压缩文件

  4. 浅蓝色–>链接文件

  5. 灰色–>其他文件

3、cd指令(切换工作目录)

cd [参数]:切换到指定目录
在这里插入图片描述

ls -a
ls -l
ls -al

cd ~  # 回到当前用户的家目录
cd    # 回到当前用户的家目录

# 比如当前在/home/tom目录下
cd .. # 回到当前目录的上一级目录,即回到了/home
cd ..  # 在上一条指令的基础上继续执行该条指令,则回到了根目录/


# 比如当前在/home/tom目录下
cd  /root # 使用绝对路径切换到root目录下
cd ../../root  # 使用相对路径到root目录下

5、文件目录管理

dir:directory,目录

1、mkdir指令、touch指令(创建)

mkdir:

  • 创建空目录

  • mkdir [选项] 要创建的目录

  • -p:创建多级目录

touch:

  • 创建空文件或者设置文件的时间

  • touch [选项] 文件名称

  • -a:仅修改 ‘读取时间’(atime)(access)

  • -m:仅修改 ‘修改时间’(mtime)

  • -d:同时修改atime与mtime (change)

atime:(access),文件的读取时间
mtime:(modify),文件内容的修改时间
ctime:(change),文件权限或者属性的修改时间

mkdir /home/dog # 在home下创建dog文件夹

# 在home下先创建animal文件夹,然后在animal文件夹内创建tiger文件夹
mkdir -p /home/animal/tiger

touch hello.txt

touch -d  '2017-05-04 15:44'  hello.txt

2、rmdir指令、rm指令(删除)

rmdir:

  • 默认删除空目录
  • rmdir [选项] 要删除的目录 (remove)
  • -rf:删除非空目录

rm:

  • 删除文件或者目录
  • rm [选项] 要删除的文件或者目录
  • -r:递归删除整个文件夹(recursion:递归)
  • -f:强制删除不提示 (force)
rmdir /home/dog
rmdir -rf /home/animal

rm /home/hello.txt
rm -rf /home/animal  # 删除整个文件夹,不提示

3、cp命令(复制)

复制文件或者目录

linux中的复制操作:

  • 如果目标文件是目录,则会把源文件复制到该目录中
  • 如果目标文件也是普通文件,则会询问是否要覆盖它
  • 如果目标文件不存在,则执行正常的复制操作

cp [选项] 源文件 目标文件

  • -p:保留原始文件的属性
  • -d:若对象为‘链接文件’,则保留该‘链接文件’的属性
  • -r:递归复制整个文件夹 (recursion:递归)
  • -i:若目标文件存在则询问是否覆盖
  • -a:相当于-pdr
  • \cp:强制覆盖不提示
    在这里插入图片描述
touch hello.txt
cp hello.txt fn.txt  # fn.txt不存在,则进行正常的复制操作,复制到f1.txt所在的目录中

cp hello.txt /home/bbb # 把hello.txt复制到 /home/bbb中
cp -r /home/bbb /opt  # 把/home/bbb复制到/opt中

\cp -r /home/bbb /opt  # 强制覆盖不提示

4、mv指令(移动、重命名)

移动文件或者重命名

剪切操作会默认把源文件删除掉,只保留剪切后的文件。

如果在同一个目录中对一个文件进行剪切操作,其实就是对其进行重命名。

mv [选项] 源文件 目标文件

mv [选项] 源文件 目标路径

mv cat.txt pig.txt  # 重命名

mv pig.txt /root  # 移动到root文件夹下
mv pig.txt /root/cow.txt  # 移动并重命名

mv /opt/bbb /home/  # 移动/opt/bbb文件夹到/home下

5、查找

1、find指令

按照指定条件来查找文件

find指令从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

find [搜索范围] [选项] [操作]

  • -name<查询方式>:按照指定的文件名查找模式查找文件

  • -user<用户名>:查找属于指定用户名的所有文件

  • -groupr<组名>:查找属于指定组的所有文件

  • nouser:查找没有所有者的文件

  • nogroup:查找无所有组的文件

  • -size<文件大小>:按照指定的文件大小查找文件
    +n:大于n
    -n:小于n
    n:等于n

  • -perm:按权限查找

  • -mtime :按照修改时间查询
    +n:n天以前
    -n:n天以内

  • -atime :按照访问时间查询

  • -ctime :按照修改文件权限的时间查询

find /home/ -name hello.txt  # 查找/home下名字为hello.txt的文件

find /home/ -name hello.txt -print # 查找并在控制台输出查找的结果

find /opt/ -user mike   # 查找/opt下用户mike的所有文件

find / -size +200M   # 查找/下大于200M的文件

2、管道符、grep指令

grep:

  • 过滤查找

  • grep [选项] 查找内容 源文件

  • -n:显示行号

  • -v:反向选择,仅列出没有‘关键词’的行

  • -i:忽略字母大小写

  • -b:将可执行文件(binary)当做文本文件(text)来搜索

  • -c:仅显示找到的行数

管道符:

  • ‘|’

  • 将前一个命令原本要输出到屏幕的标准正常数据当做是后一个命令的标准输入

grep -n 'yes' /home/hello.txt
cat /home/hello.txt | grep 'yes'

3、locate指令、which指令

locate指令:

  • 可以快速定位文件路径

locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。

locate指令无需遍历整个文件系统,查询速度较快。

为了保证查询结果的准确度,管理员必须定期更新locate时刻。

  • 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

which

  • 查看某个指令在哪个目录下
locate hello.txt

which ls

4、通配符(*、?[0-9])

1 ) * :匹配零个或者多个字符

2)?:匹配单个字符

3)[0-9]:匹配0-9之间的单个数字的字符

4)[abc]:匹配a、b、c三个字符中的任意一个字符

ls -l /dev/sda*

输出:
brw-rw----. 1 root disk 8, 0 May 4 15:55 /dev/sda
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2

5、转义字符

1)\:使反斜杠后面的一个变量变为单纯的字符串

2)’ ':转义其中所有的变量为单纯的字符串

3)" ":保留其中的变量属性,不进行转义处理

4)``:反引号,把其中的命令执行后返回结果

6、压缩

1、gzip、gunzip指令

gzip:

  • 压缩文件

  • gzip 文件名

  • 只能将文件压缩为 *.gz 文件

gunzip:

  • 解压文件

  • gunzip 文件.gz

gzip /home/hello.txt
gunzip /home/hello.txt.gz

2、zip、unzip指令

zip

  • 压缩文件和目录

  • zip [选项] xxx.zip 将要压缩的内容

  • -r:递归压缩,即压缩文件夹(recursion)

unzip:

  • 解压缩

  • unzip [选项] xxx.zip

  • -d<目录>:指定解压后文件的存放目录

zip -r myhome.zip  /home/  # 把home下的所有文件/文件夹压缩成myhome.zip 
unzip -d /opt/tmp  /home/myhome.zip  # 把myhome.zip解压到/opt/tmp中

3、tar指令

打包指令

最后打包后的文件是 .tar.gz 文件

tar [选项] xxx.tar.gz 要打包的内容

  • -z:用Gzip压缩或者解压

  • -j:用bzip2压缩或者解压

  • -c:产生.tar打包文件

  • -x:解包.tar文件

  • -v:显示详细信息,可以向用户显示压缩或者解压的过程

  • -f:指定压缩后的文件名,必须放到参数的最后一位

  • -C:指定解压到的目录

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt # 压缩多个文件

tar -zcvf myhome.tar.gz /home/  # 压缩/home文件夹

tar -zxvf pc.tar.gz  # 解压到当前目录

mkdir /opt/tmp2
tar -zxvf /home/myhome.tar -C /opt/tmp2 # 解压到/opt/tmp2目录下

7、ln指令(软、硬链接)

硬链接:可以理解为一个‘指向原始文件的指针’,硬链接文件和原始文件其实是同一个文件,只是名字不同。即使原始文件被删除,依然可以通过硬链接文件来访问。

软链接,也称为符号链接,类似于windows中的快捷方式,主要存放了其他文件的路径。原始文件被删除后,链接文件也将失效。

ln中的参数:

  • -s:创建‘符号链接’,如果不带-s参数,则默认创建硬链接

  • -f:强制创建文件或者目录的链接

  • -i:覆盖前先询问

  • -v:显示创建链接的过程

ln -s [原文件或目录] [软链接名]

  • 给原文件创建一个软链接

  • cd 软链接名:进入到的是原文件的目录

  • 当使用pwd指令查看目录时,仍然看到的是软链接所在的目录

删除软链接:

  • rm 软链接名
    后面不带/,否则会被认为是个目录,则不可以rm直接删掉
ln -s /root  /home/myroot # 在/home下创建一个软链接myroot,连接到/root目录

cd myroot/  # 进入到的是/root

rm /home/myroot  # 删除软链接myroot,后面不带/

8、时间日期类

1、date(显示、设置当前日期)

显示当前时间:

  • date

显示当前年份:

  • date +%Y

显示当前月份:

  • date +%m

显示当前是哪一天:

  • date +%d

显示年月日时分秒:

  • date “+%Y-%m-%d %H:%M:%S”

设置日期:

  • date -s 字符串时间
date -s "2021-09-27 14:02:10"

2、cal(查看日历)

显示本月日历:

  • cal

显示2021年日历:

  • cal [选项]
  • cal 2021

6、文本文件编辑

1、cat指令

用于查看纯文本文件(内容较少的)

cat [选项] 要查看的文件

  • -n:显示行号,(对输出的所有行编号)

  • -b:对非空输出行编号

  • 只能浏览文件,不能修改文件,想要修改文件可以借助管道符

cat -n hello.txt
cat -n hello.txt | grep 'yes'

2、more指令

more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

more 要查看的文件

  • 适用于内容较多的纯文本文件

常用的快捷键有:

  • 空白键(space):向下翻一页
  • Enter:向下翻一行
  • q:退出more,不再显示该文件内容
  • =:输出当前行的行号
  • :f :输出文件名和当前行的行号
  • Ctrl+F:向下滚动一屏
  • Ctrl+B:返回上一屏
more hello.txt

3、less(分屏查看)

用于分屏查看文件内容,功能与more类似,但是比more更强大。

less 要查看的文件

快捷键:

  • q:退出less

  • /子串:向下搜索‘子串’,n:向下查找,N:向上查找

  • ?子串:向上搜索‘子串’,n:向上查找,N:向下查找

  • 空白键:向下翻一页

  • [pagedown]:向下翻一页

  • [pageup]:向上翻一页

less opt/hello.txt

4、head(读取前十行)

用于显示文件的开头部分,默认显示前十行

  • head 文件

  • head -n x 文件:显示前x行内容

head -n 5 /etc/profile  # 显示/etc/profile文件的前5行内容

5、tail(读取后十行)

用于显示文件的尾部部分,默认显示尾十行

  • tail 文件

  • tail -n x 文件:显示尾部x行内容

  • tail -f 文件 :实时追踪该文档的所有更新

tail -n 5 /etc/profile  # 查看/etc/profile最后5行的内容

tail -f /home/mydate.txt  # 实时监控mydate.txt

6、cut(按列读取)

按‘’提取文本字符

cut [参数] 文本

  • -d 符号:按照间隔符号分割列
  • -f x:查看x列内容
cut -d : -f 1 /etc/passwd  # 提取以:为间隔符的第一列内容

6、tr(替换字符)

用于替换文本文件中的字符

tr [原始字符] [目标字符]

cat hello.txt | tr [a-z] [A-Z]   # 把所有的小写字母替换成大写

7、wc(统计文本的行数、字数、字节数)

统计指令文本的行数、字数、字节数

wc [参数] 文本

  • -l:只显示行数
  • -w:只显示单词数
  • -c:只显示字节数

在linux系统中,passwd是用来保存系统账户信息的文件

wc -l /etc/passwd  # 可以用于查看当前系统中共有多少用户

8、stat(查看文件的信息)

用于查看文件的具体存储信息和时间等信息

stat 文件名称

  • 会输出文件的三种时间状态:access、modify、change(同touch指令中的atime、mtime、ctime)
stat hello.txt  

9、diff(比较)

用于比较多个文本文件的差异

diff [参数] 文件

  • –brief:判断两个文件是否相同
  • -c:详细比较多个文件的差异之处
diff --brief file1.txt file2.txt

diff -c file1.txt file2.txt

10、>指令、>>指令

1)> :重定向

  • 输入重定向是指把文件导入到命令中
  • 输出重定向指的是把原本要输出到屏幕的数据信息写入到指定文件中

2)>>:追加

常用语法:

  • ls -l > 文件:
    将列表的内容写入到文件中去,(覆盖写)(没有文件,则创建)

  • ls -l >> 文件:
    将列表的内容追加到文件末尾

  • cat 文件1 > 文件2:
    将文件1的内容覆盖到文件2

  • echo ‘内容’ > 文件:
    将echo的内容写入到文件中去,(覆盖写)

ls -l /home > /home/info.txt # 将/home下的文件列表写入到 /home/info.txt中,覆盖写入,如果info.txt文件不存在,则会创建

1)文件描述符

每打开一个文件都有一个整数与之对应,这个整数就是文件描述符【0、1、2】

  • 0:标准输入重定向(stdin): 默认从键盘输入,也可以从其他文件或者命令中输入

  • 1:标准输出重定向(stdout):正确返回值 输出到屏幕

  • 2:错误输出重定向(stderr):错误返回值 输出到屏幕

2)重定向符

  • 1)>:输出重定向符
  • 2) <:输入重定向符
  • 3) 2 >:标准错误输出

1、输入重定向

  • 命令 < 文件:将文件作为命令的标准输入

  • 命令 << 分界符:从标准输入中读入,直到遇到分界符才停止

  • 命令 < 文件1 > 文件2:将文件1作为命令的标准输入,并将标准输出到文件2

2、输出重定向

  • 命令 > 文件:将标准输出重定向到文件中(覆盖文件中原有数据)

  • 命令 2> 文件:将错误输出重定向到文件中(覆盖)

  • 命令 >> 文件:将标准输出重定向到文件中(追加)

  • 命令 2>> 文件:将错误输出重定向到文件中(追加)

  • 命令 >> 文件 2>&1 或者 命令 &>> 文件:
    将标准输出与错误输出共同写入到文件中(追加)

对于重定向中的标椎输出模式,可以省略文件描述符1不写,但是2不可以省略。

  • “1>” 通常可以省略成 “>”

3)1 > &2、2 > &1

1>&2和2>&1是什么意思

1 > &2:标准输入重定向到标准错误输出

  • 正确返回值传递给2输出通道 ,&2表示2输出通道

  • 如果此处错写成 1 > 2, 就表示把1输出重定向到文件2中.

举例:假设当前目录只有一个文件 a.txt.

[root@redhat box]# ls 
a.txt   # 所谓的1输出 

[root@redhat box]# ls b.txt          
No such file or directory   # 由于没有b.txt这个文件, 于是返回错误值, 这就是所谓的2输出 

[root@redhat box]# ls a.txt b.txt  1>file.out 2>file.err 
# 执行后,没有任何返回值. 原因是, 返回值都重定向到相应的文件中了,而不再前端显示 

7、用户 、组 管理

在这里插入图片描述
在linux中每个用户必须属于一个组,不能独立于组外。

在linux中每个文件都有所有者、所在组、其他组的概念。

所有者:

  • 一般是谁创建了该文件/目录,谁自然就成为该文件的所有者。

所在组:

  • 当某个用户创建了一个文件后,这个文件所在组就是该用户所在组(默认)

其他组:

  • 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

UID(User IDentification):

  • 在linux中,UID具有唯一性

  • 管理员UID为0:系统的管理员用户
    linux的管理员为root,因为root的UID=0

  • 系统用户UID为1~999

  • 普通用户UID从1000开始:是由管理员创建的用于日常工作的用户

1、用户和组的相关文件

2、useradd、groupadd(创建用户 / 组)

useradd:

  • useradd [选项] 用户名

  • 使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的shell解释器为/bin/bash

  • -d:指定用户的家目录,默认为/home/username

  • -e:账户的到期时间,格式为YYYY-MM-DD

  • -g:指定一个初始的用户基本组
    。。。。

'
创建用户一:当创建用户成功后,会自动创建和用户同名的家目录
'
useradd mike  # 添加一个用户mike,默认该用户的家目录在/home/mike

'
创建用户二:在创建用户时指定家目录:
useradd -d 指定目录 新的用户名
'
useradd -d /home/test mike # 添加一个用户mike,默认该用户的家目录在/home/test


'创建组:
groupadd 组名
'
groupadd class1

'
创建用户三:在创建用户时指定组:
useradd -g 用户组 用户名
'
useradd -g class1 mike  # 添加一个用户mike,指定mike的组是class1

2、userdel、groupdel(删除用户 / 组)

  • 切换到root管理员下
'
删除用户,但是要保留家目录
'
userdel mike 

'
删除用户以及该用户的主目录
'
userdel -r mike

'
删除组:
groupdel 组名
'
groupdel class1

3、passwd(修改用户密码)

普通用户可以使用passwd命令修改自身的系统密码

root管理员可以修改其他所有人的密码,且不需要验证旧密码

用户密码保存在/etc/shadow文件中

passwd [选项] 用户名

  • -l:锁定用户,禁止其登录
  • -u:解除锁定,允许用户登录
  • 。。。。
passwd mike # 给用户mike指定密码

4、logout、su(注销用户、切换用户)

用户注销与切换:

  • 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
  • 当需要返回到原来的用户时,使用exit或者logout
logout  # 注销用户,在运行级别3下有效,在图形运行级别下无效

su - 用户名  # 切换用户
  • su - 用户:其中 - 意味着完全切换到新用户,即把环境变量也变更为新用户的相应信息。

5、sudo

用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务。

sudo [选项] 命令名称

4、查询

'显示用户当前所处的工作目录'

pwd

'查看当前登录的用户'
who am I
whoami

'查询用户信息'
id root 

1、ls -ahl(查看文件所有者、所在组、权限)

在这里插入图片描述
文件权限(0-9位):

  • 第0位确定文件类型(d,-,l,c,b)
    -:普通文件
    l:链接,相当于windows的快捷方式
    d:目录,相当于windows的文件夹
    c:字符设备文件,鼠标、键盘
    b:块设备,比如硬盘
    p:管道文件

  • 第1-3位确定文件所有者对该文件的权限

  • 第4-6位确定文件所有组对该文件的权限

  • 第7-9位确定其他用户对该文件的权限

其他:

  • 第十位:1
    当是文件时,表示硬连接数,
    当是目录时,表示子目录数

  • 第一个root:文件所有者

  • 第二个root:所在组

  • 38:文件大小(字节)为38个字节

  • 11月 3 20:44:最后修改日期为11月 3 20:44

  • hello.txt:文件名

1)rwx作用到文件

r:

  • 可读(read)
  • 可以读取文件的实际内容

w:

  • 可写(write)
  • 可以编辑、新增、修改、删除文件中的内容,但是不代表可以删除该文件
  • 删除一个文件的前提是对该文件所在的目录有写权限,才能删除该文件。

x:

  • execute,可以被执行,能够运行

可以用数字表示:

  • r = 4 ,(100)
  • w = 2, (010)
  • x = 1, (001)
2)rwx作用到目录

r:

  • 可以读取目录中的文件列表
  • ls查看目录内容

w:

  • 可写,可以修改
  • 可以在目录内创建、删除、重命名文件

x:

  • 可执行,可以进入到该目录

5、修改

1、chown(修改文件/目录所有者)

'
chown 新的用户名 文件/目录
chown newowner:newgroup  文件/目录 :改变所有者和所在组

-R :如果是目录,则使其下所有子文件或者目录递归生效
'

useradd tom
chown tom apple.txt  # 把apple.txt文件的所有者改成tom

chown -R tom  /home/test

2、chgrp(修改文件/目录所在组)

'chgrp 新的组名 文件/目录
-R:递归操作目录及其下的所有文件
'
groupadd fruit
chgrp fruit apple.txt
chgrp -R  fruit  /home/test  # 把/home/test目录下的所有文件和目录的所在组都修改成fruit

3、usermod(修改用户所在组)

linux中,用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器修改其中的用户参数项目,也可以使用usermod命令修改已经创建的用户信息,诸如用户的UID、基本/扩展组、默认终端等。

usermod用于修改用户属性。

  • -e:账户的到期时间
  • -g:变更所属用户组
  • -G:变更扩展用户组
  • -L:锁定用户禁止其登录系统
  • -U:解锁用户,允许其登录系统
  • 。。。。。

在添加用户时,可以指定将用户添加到哪个组,同样的用root的管理权限可以改变某个用户所在的组

'
usermod -g 新组名 用户名
'
groupadd class2
useradd bob  # 默认bob在bob组
usermod -g class2 bob

'
usermod -d 目录名 用户名
改变该用户登陆的初始目录。(前提:用户需要有进入到目录的权限)
'

4、chmod(修改权限)

通过chmod指令,可以修改文件或者目录的权限

1)通过 +、-、= 变更权限

u:所有者
g:所有组
o:其他人
a:所有人(u、g、o的总和)

'
chmod u=rwx, g=rx, o=x 文件/目录名
chmod o+x 文件/目录名
chmod a-x 文件/目录名
'
chmod u=rwx, g=rx, o=rx hello.txt
chmod u-x, g+x, hello.txt
chmod a+r hello.txt

2)通过数字变更权限

r=4 w=2 x=1

rwx=7

'
chmod u=rwx, g=rx, o=rx 文件/目录名
等价于
chmod 751 文件/目录名
'

chmod 775 /home/abc.txt


7、进程(process)

在linux中,每个执行的程序都称为一个进程。每一个进程都分配一个id号(pid,进程号)

每个进程都可能以两种方式存在:前台、后台。

所谓前台进程就是用户目前的屏幕上可以进行操作的。

后台进程则是实际在操作,但是屏幕上无法看到的进程,通常使用后台方式执行。

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

1、ps(查看系统中正在执行的进程)

用来查看目前系统中,有哪些进程正在执行,以及它们执行的状况。

  • ps:(可以不加任何参数)
  • ps -a:显示当前终端的所有进程信息
  • ps -u:以用户的格式显示进程信息
  • ps -x:显示后台进程运行的参数
  • ps -ef:以全格式显示当前所有的进程
    -e:显示所有进程
    -f:全格式

在这里插入图片描述

信息选项说明:

  • USER:用户名称

  • PID:进程号

  • %CPU:进程占用cpu的百分比

  • %MEM:进程占用物理内存的百分比

  • VSZ:进程占用的虚拟内存的大小(单位:KB)

  • RSS:进程占用的物理内存的大小(单位:KB)

  • TT:终端名称,缩写

  • STAT:进程状态,
    S:睡眠
    s:表示该进程是会话的先导进程
    N:表示进程拥有比普通优先级更低的优先级
    R:正在运行
    D:短期等待
    Z:僵死进程
    T:被跟踪或者被停止

  • STARTED:进程的启动时间

  • TIME:cpu时间,即进程使用cpu的总时间

  • COMMAND:启动进程所用的命令和参数,如果太长会被截断显示

UID:用户id

PID:进程id

PPID:父进程id

2、pstree(查看进程树)

pstree [选项]

  • 可以更加直观的看到进程信息
  • -p:显示进程的pid
  • -u:显示进程的所属用户
    在这里插入图片描述

3、top(动态监控进程)

top [选项]

  • -d x:指定top命令每隔x秒更新,默认是3秒
  • -i:使top不显示任何闲置或者僵死进程
  • -p:通过指定监控进程id来仅仅监控某个进程的状态
  • 相当于增强版的Windows中的任务管理器

在这里插入图片描述

交互操作指令:
在这里插入图片描述
应用实例:
在这里插入图片描述

4、pidof(查询进程的pid值)

pidof [选项] 进程名称

  • 每个进程的pid是唯一的

5、kill、killall(终止进程)

kill [选项] 进程号

  • 通过进程号杀死 / 终止进程

  • -9:强迫进程立即停止

killall 进程名称

  • 用于终止某个指定名称的服务所对应的全部进程
  • 支持通配符,在系统因负载过大而变得很慢时很有用。
'踢掉某个非法登录的用户'

kill 进程号
kill 11421

'终止多个gedit'
killall gedit

6、服务管理

服务本质上就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如sshd、防火墙等。又被称为守护进程

1、服务的运行级别

在这里插入图片描述

2、chkconfig(给服务的各个运行级别设置自 启动 / 关闭)

1)chkconfig --list [ | grep xxx]

  • 查看服务

2)chkconfig 服务名 --list

3)chkconfig --level x 服务名 on/off

  • 重启后生效
chkconfig --level 3 network off

3、service管理指令

4、systemctl指令

systemctl 指令管理的服务在 /usr/lib/systemd/system 中查看

systemctl [ start | stop | restart | status] 服务名

systemctl status firewalld  # 查询当前防火墙的状况 firewalld.service
systemctl stop firewalld  # 关闭防火墙
systemctl start firewalld  # 开启防火墙

关闭或者启用防火墙后,立即生效。

  • telnet 测试 某个端口 即可

这种方式只是临时生效,当重启系统之后,还是回归以前对服务的设置。

如果希望设置某个服务自启动或者关闭永久生效,要使用 systemctl [enable | disable] 服务名

1. systemctl [enable | disable] 服务名(设置服务的自启动、关闭状态)

1)systemctl list-unit-files [ | grep 服务名]

  • 查看服务开机启动状态,grep可以进行过滤

2)systemctl enable 服务名

  • 设置服务开机启动

3)systemctl disable 服务名

  • 关闭服务开机启动

4)systemctl is-enabled 服务名

  • 查询某个服务是否是自启动的
2. firewall(打开、关闭指定端口)

在真正的生产环境中,往往需要将防火墙打开,但是如果把防火墙打开的话,那么外部请求数据包就不能跟服务器监听端口通讯。这时,就需要打开指定的端口,比如80,22,8080等。
在这里插入图片描述
permanent:永久的

打开端口:

  • firewall -cmd --permanent --add-port=端口号/协议

关闭端口:

  • firewall -cmd --permanent --remove-port=端口号/协议

重新载入,才能生效:

  • firewall -cmd --reload

查询端口是否开放:

  • firewall -cmd --query-port=端口/协议

query:疑问,问号

firewall -cmd --permanent --add-port=111/tcp
firewall-cmd --reload  # 开放111端口,重启后生效

firewall -cmd --permanent --remove-port=111/tcp
firewall-cmd --reload  # 开放111端口,重启后生效

5、ssh命令(远程连接工具)

Linux ssh命令详解

linux之ssh命令详解

ssh [-p port ] user@remote

  • user 是在远程机器上的用户名,如果不指定的话默认为当前用户

  • remote 是远程机器的地址,可以是IP/域名,或者是别名

  • port 是SSH Server监听的端口,如果不指定,就为默认值22

  • 使用exit退出当前用户的登录

在这里插入图片描述

7、定时任务调度

任务调度:系统在某个时间执行的特定的命令或者程序

任务调度分类:

  1. 系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等。
  2. 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

在这里插入图片描述

1、crontab

crontab:定时任务

crontab [选项]

  • -e:编辑crontab定时任务
  • -l:查询crontab任务
  • -r:删除当前用户的所有crontab任务

步骤:

  1. 设置任务调度文件:/etc/crontab
  2. 设置个人任务调度:执行命令crontab -e
  3. 输入任务到调度文件中去:
    比如:* /1 * * * * ls -l /etc/ > /tmp/to.txt

参数说明:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

*/1 ****  date >> /tmp/mydate  # 每隔1分钟,就将当前的日期信息追加到/tmp/mydate文件中

'
每隔一分钟,将当前日期和日历都追加到/home/mycal文件中
'
第一步:
vim /home/my.sh 
写入内容:
date  >> /home/mycal
cal >> /home/mycal

第二步:给my.sh增加执行权限
chmod u+x /home/my.sh

第三步:
crontab -e 
写入任务:
*/ 1**** /home/my.sh

'
每天凌晨2:00将mysql数据库testdb,备份到文件中
指令为:
mysqldump -u root -p 密码 数据库 > /home/db.bak
'
crontab -e
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak

终止任务调度:

  • contab -r

列出当前有哪些任务调度:

  • crontab -l

重启任务调度:

  • service crond restart
2、at(一次性定时任务)

at命令是一次性定时计划任务,执行完一个任务后就不在执行此任务了。

在使用atd命令的时候,一定要保证atd进程的启动。可以使用相关指令来查看。

  • ps -ef | grep atd // 可以检测atd是否在运行

at的守护进程atd会以后台模式运行,检查作业队列来运行。

默认情况下,atd守护进程每60s检查作业队列。有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

在这里插入图片描述

at [选项] [时间]

  • -m:当指定的任务被完成后,将给用户发送邮件,即使没有标准输出。
  • -v:显示任务将被执行的时间
  • -V:显示版本信息
  • -c:打印任务的内容到标准输出
  • -q<队列>:使用指定的队列
  • -f<文件>:从指定文件读入任务而不是从标准输入读入
  • -t<时间参数>:以时间参数的形式提交要运行的任务
  • -I:atq的别名
  • -d:atrm的别名

at指定时间的方法:

  1. 接受在当天的hh:mm(小时:分钟)式的时间指定。
    假设该时间已经过去,那么放在第二天执行。例如04:00

  2. 使用midnight(深夜)、noon(中午)、teatime(一般是下午四点)等比较模糊的词语来指定时间。

  3. 使用12小时计时制,即在时间后面加上AM(上午)或者PM(下午)来说明是上午还是下午。例如12pm

  4. 指定命令执行的具体日期,指定格式为month day(月 日)或者mm/dd/yy(月/日/年)或者dd.mm.yy(日.月.年)

  5. 使用相对计时法。指定格式为:now + count time-units。
    now就是当前时间,
    time-units是时间单位,可以是minutes、hours、days、weeks,
    count是时间的数量,几天,几小时。
    比如:now + 5 minutes

  6. 直接使用today、tomorrow来指定完成命令的时间。

案例:

1、2天后的下午5点执行 /bin/ls /home
在这里插入图片描述
在这里插入图片描述

8、网络配置

在这里插入图片描述

1、ifconfig(查看网络配置)

在这里插入图片描述

2、ping(测试主机之间网络连通性)

ping 目的主机

ping www.baidu.com

3、netstat(查看系统网络情况)

status:状态

netstat [选项]

  • -an:按一定顺序排列输出
  • -p:显示哪个进程在调用

在这里插入图片描述
LINUX中如何查看某个端口是否被占用
查看端口冲突:

1.netstat -anp |grep 端口号

  • 主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了。
    在这里插入图片描述

2.netstat -nultp(此处不用加端口号)

  • 查看当前所有已经使用的端口情况
    在这里插入图片描述
    listen表示被占用,listening不代表被占用

在这里插入图片描述
查看端口常用命令

4、网络环境配置

1)DHCP自动获取

linux启动后会自动获取ip

缺点是每次自动获取的ip地址可能不一样。

2)指定ip

直接修改配置文件来指定ip,并可以连接到外网

vi /etc/sysconfig/network-scripts/ifcfg-ens33

9、磁盘

linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。

hard disk:硬盘

对于IDE硬盘,驱动器标识符为‘hdx~’,

  • ‘hd’表明分区所在设备的类型,

  • ‘x’为盘号:包括a、b、c、d,a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘

  • ‘ ~ ’代表分区,前四个分区用数字1到4表示,是主分区或者扩展分区,从5开始就是逻辑分区

  • 比如hda3表示为第一个IDE硬盘上的第三个主分区或者扩展分区,

  • hdb2表示第二个IDE硬盘上的第二个主分区或者扩展分区

对于SCSI硬盘,标识为‘sdx~’

在这里插入图片描述

1、lsblk(查看所有设备的挂载情况)

lsblk 或者 lsblk -f
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、磁盘情况查询

1、df(查询系统整体磁盘使用情况)

df -h

df是从文件系统考虑的,不光要考虑文件占用的空间,也要考虑被命令或者程序占用的空间。

最常见的就是文件已经删除,但是程序没有释放空间。
在这里插入图片描述

2、du(查询指定目录的磁盘占用情况)

查看一个或者多个文件占用了多大的磁盘空间

du -sh /*

  • 查看在linux系统根目录下所有一级目录分别占用的空间大小

du -h

  • 默认为当前目录
  • -s:指定目录占用大小汇总
  • -h:带计量单位
  • -a:含文件
  • -c:列出明细的同时,增加汇总值
  • –max-depth=1:子目录深度

在这里插入图片描述

3、工作实用指令

统计/opt文件夹下目录的个数

ls -l /opt | grep "^d" | wc -l

统计/opt文件夹下文件的个数

ls -l /opt | grep "^-" | wc -l

统计/opt文件夹下文件的个数,包括子文件夹里的

ls -lR /opt | grep "^-" | wc -l

统计/opt文件夹下目录的个数,包括子文件夹里的

ls -lR /opt | grep "^d" | wc -l

以树状显示目录结构

  • tree 目录
yum install tree  # 没有的话,要先安装
tree /home/

在这里插入图片描述

3、增加硬盘的步骤

  1. 虚拟区添加硬盘
  2. 分区
  3. 格式化
  4. 挂载
  5. 设置可以自动挂载

1、添加硬盘

在这里插入图片描述

2、fdisk(分区)

fdisk /dev/sdb:对/sdb分区

  • m:显示全部可用的参数
  • p:显示磁盘分区信息,同 fdisk -l
  • n:新增分区
  • d:删除分区
  • w:写入并退出
  • q:不保存直接退出

开始分区后输入n,新增分区,然后选择p,分区类型为主分区。

两次回车默认剩余全部空间。

最后输入w写入分区并退出,若不保存退出输入q。
在这里插入图片描述

3、mkfs(格式化磁盘)

mkfs -t ext4 /dev/sdb1

其中ext4是分区类型

4、mount、umount(挂载、撤销挂载)

挂载:将一个分区与一个目录联系起来

用命令行挂载,重启后会失效

  • mount 设备名称 挂载目录
  • umount 设备名称

或者

  • umount 挂载目录

选项:

  • -a:挂载所有在/ets/fstab中定义的文件系统
  • -t:指定文件系统的类型
mount  /dev/sdb1  /newdisk

umount /dev/sdb1
umount /newdisk

5、永久挂载

通过修改/etc/fstab 实现挂载

添加完成后,执行 mount -a 即刻生效

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值