1、Linux基础篇
1.1 linux目录结构
-
/:根目录 -
/bin:bin是Binary的缩写,目录存放者最经常使用命令。 -
/boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 -
/dev:dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。 -
/etc:存放所有的系统管理所需要的配置文件和子目录。 -
/home:用户主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 -
/lib:目录例存放的着系统最基本的动态链接共享库,其作用类似于windows中的DLL文件。几乎所有的引用程序都需要用到这些共享库。 -
/lost+found:一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 -
/media:Linux系统会自动识别一些设备,如U盘、光驱等,当识别后,Linux会把识别的设备挂载到这个目录下。 -
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。 -
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则可以放到这个目录下。默认是空的。 -
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all -
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
-
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
-
/srv:该目录存放一些服务启动之后需要提取的数据。
-
/sys:
-
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
-
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
-
该文件系统是内核设备树的一个直观反映。
-
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
-
/tmp:这个目录是用来存放一些临时文件的。
-
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
-
/usr/bin:系统用户使用的应用程序。
-
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
-
/usr/src:内核源代码默认的放置目录。
-
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
2、Linux实操篇
2.1、远程连接
-
Windows连接Linux:使用XShell软件 -
Linux连接Linux:使用SSH:#两台机器都需要开启ssh #安装ssh sudo apt install ssh #开启ssh服务 service ssh start #连接 ssh [用户名]@[ip] #之后输入密码进行连接确认
2.2、vi/vim编辑器
vi是linux系统内置的编辑器,vim是vi的增强版。
2.2.1、vi的三种常见模式
-
正常模式
使用
vi/vim打开文档直接进入正常模式,在这个 模式中可以使用上下左右移动光标可以删除复制粘贴进行文件数据处理。 -
插入模式/编辑模式
按下
i,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式。 -
命令行模式
在这个模式中,可以提供你相关指令,完成读取、存盘、替换、离开
vim、显示行号等动作则是在次模式中达成。
2.2.2、vim快捷键
yy:复制当前行。5yy:复制当前向下5行。/word:命令行模式下,在文件中查找word,输入n,即查找下一个。set nu/set nonu:命令行下,设置显示文件行号,取消行号。G/gg:正常模式下,跳到文尾或文首。u:撤销操作,正常模式下20 shift+g:跳到第20行,先输入20,再按shift+g。显示行号更可观。
更多详细命令:https://www.cnblogs.com/markleaf/p/7808817.html
2.3、关机重启注销
2.3.1、关机重启
基本命令:
shutdown -h now:立即进行关机shutdown -h 1:1分钟后关机shutdown -r now:现在重启计算机halt:关机reboot:重启sync:把内存的数据同步到磁盘
注意:无论是重启还是关机,请先使用sync命令,将内存数据写到磁盘
2.3.2、登录注销
-
登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登录后使用
su - [用户名]命令切换成管理员。使用su需要root密码,密码设置如下:
#root可以省略 sudo passwd [root] #回车确定后,输入当前用户密码 #之后设置root密码 -
3在提示符中输入
logout即可注销用户。仅在远程连接登录时有效。
2.4、用户管理
2.4.1、添加用户
#创建fdk用户,指定家目录,指定shell
useradd -m /home/fdk -s /bin/bash fdk
#在添加用户时,如果没有指定用户组,则会自动创建同名用户组
#1.当创建用户成功后,会自动创建和用户同名的家目录(/home/fdk)
#2.也可以通过`useradd -d 指定目录 用户名`,给新创建的用户指定家目录
主要参数:
-
-c:加上备注文字,备注文字保存在passwd的备注栏中。 -
-d:指定用户登入时的主目录,替换系统默认值/home/<用户名> -
-D:变更预设值。 -
-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。 -
-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1. -
-g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。 -
-G:指定用户所属的附加群组。 -
-m:自动建立用户的登入目录。 -
-M:不要自动建立用户的登入目录。 -
-n:取消建立以用户名称为名的群组。 -
-r:建立系统账号。 -
-s:指定用户登入后所使用的shell。默认值为/bin/bash。 -
-u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。
2.4.2、指定/修改密码
-
基本语法
passwd 用户名
2.4.3、删除用户
-
基本语法
#删除用户,但保留家目录 userdel 用户名 #删除用户,不保留家目录 userdel -r 用户名 -
删除用户时,一般会保留家目录
2.4.4、查询用户信息
-
基本语法
id 用户名
2.4.5、切换用户
在Linux操作中,如果当前用户权限不足,可以通过su - 指令,切换到高权限用户。
-
基本语法
su - 切换的用户名 -
需要返回原来的用户,使用
exit即可。 -
高权限用户切换到低权限用户,不需要输入密码,反之则需要。
2.4.6、查看当前用户/登录用户
-
基本语法
whoami/who am i
2.4.7、用户组
-
创建组
groupadd 组名 -
删除组
groupdel 组名 -
添加用户时,直接加入组
useradd -g 组名 用户 -
修改已有用户的组
usermod -g 组名 用户名 #修改后,需要注销重新登录才生效。
2.4.8、用户和组的相关文件
-
/etc/passwd文件-
用户(user)的配置文件,记录用户的各种信息。
-
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
-
-
/etc/shadow文件- 口令配置文件
- 每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/etc/group文件- 组(group)的配置文件,记录Linux包含的组的信息
- 每行含义:组名:口令:主标识号:组内用户列表
2.5、实用指令
2.5.1、指定运行级别
Linux共有7个运行级别
-
0:关机 -
1:单用户【找回丢失密码】 -
2:多用户状态没有网络服务 -
3:多用户状态有网络服务 -
4:系统未使用保留给用户 -
5:图形界面 -
6:系统重启
常用的运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字。(ubuntu中无效)
命令:init [0123456]
实例: 找回丢失的root密码
思路:进入单用户模式,修改root密码,进入单用户模式不需要输入密码。
2.5.2、帮助指令
当我们对某个指令不熟悉的时候,可以使用Linux提供的帮助指令来了解这个指令的使用方法。
-
man基本语法
man [命令或配置文件](功能描述:获得帮助信息 -
help基本语法
help 命令(功能描述:获得shell内置命令的帮助信息) -
info基本语法
info 命令
2.5.3、文件目录类
-
pwd指令:直接使用,显示当前工作目录的绝对路径。 -
ls指令ls [选项] [目录或文件]常用选项:
-a:显示当前目录所有文件,包括.开头的隐藏文件-l:以列表的方式显示文件信息
-
cd指令:切换到指定目录cd [参数/路径]参数:
cd ~或cd:切换到家目录cd ..:回到上一级目录cd 路径:切换到指定目录
-
mkdir指令:用户创建目录既文件夹mkdir [选项] 要创建的目录常用选项:
-p:创建多级目录
-
rmdir指令:删除空目录rmdir [选项] 要删除的空目录mkdir删除的是空目录,如果目录中有内容,则无法删除!提示: 如果需要删除非空目录,需要使用
rm -rf 目录进行删除。慎重使用。 -
touch指令:创建空文件touch 文件名 #文件可以一次性创建多个 -
cp指令:拷贝文件到指定目录cp [选项] 目标文件 目的地 #将目标文件拷贝到目的地 \cp #可以进行强制覆盖常用选项:
-r:递归复制整个文件夹
-
rm指令:删除文件或目录rm [选项] 要删除的文件或目录常用选项:
-r:递归删除整个文件夹-f:强制删除
-
mv指令:移动文件与目录或者重命名#重命名,在同级目录下,或者移动时路径中有文件名。 mv 原文件名 新文件名 #移动, 后跟的移动路径不带文件名。 mv 文件名 移动路径 -
cat指令:查看文件内容,只读cat [选项] 要查看的文件 #管道符号和more配合进行分页显示内容 cat [选项] 文件 | more常用选项:
-n:显示行号
通常会和
| more一起使用 -
more指令:是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置了多个快捷键。more 要查看的文件操作 功能说明 空格键 下翻一页 回车 下翻一行 q 立即离开more,不再显示文件内容 Ctrl+F 向下滚动一屏 Ctrl+B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号 -
less指令:用来分屏查看文件内容,他的功能与more指令类似,但是比more指令更加强大,支持各种显示终端,less指令在显示文件内容时,并不是一次将文件加载之后显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。less 要查看的文件操作 功能说明 空格键 向下翻动一页 [pagedown] 向下翻动一页 [pageup] 向上翻动一页 /字串 向下搜索[字串]的功能;n:向下查找;N:向上查找 ?字串 向上搜索[字串]的功能;n:向下查找;N:向上查找 q 离开less程序 -
>指令和>>指令:>输出重定向;>>追加#列表的内容写入文件中(覆盖写入) ls -l > 文件 #列表的内容写入到文件的末尾,既追加写入 ls -l >> 文件 #将文件1的内容覆盖到文件2 cat 文件1 > 文件2 #内容追加写入至文件 echo "内容" >> 文件 -
echo指令:输出内容到控制台echo [选项] [输出内容] #输出系统环境变量配置 echo $PATH -
head指令:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。#显示文件前10行内容 head 文件 #显示前5行内容 head -n 5 文件 -
tail指令:用于输出文件中尾部内容,默认情况下tail指令显示文件后10行内容#查看文件后10行内容 tail 文件 #查看文件后5行内容,5可以是任意数 tail -n 5 文件 #实时追踪该文件的所有跟新 tail -f 文件 -
ln指令:软链接也叫符号链接,类似于Windows中的快捷方式,主要存放了链接其他文件的路径#给原文件创建一个软链接 ln -s [原文件或目录] [软链接名] ln -s /root linkToRoot #创建root的软链接 -
history指令:查看已经执行过的历史命令,也可以执行历史指令。#查看历史指令,显示所有指令 history #执行第10行指令 !10
2.5.4、时间日期类
-
date指令:显示当前日期#显示当前时间 date #显示当前年份 date +%Y #显示当前月份 date +%m #显示当前日期天数 date +%d #显示年月日时分秒 date +"%Y-%m-%d %H:%M:%S%" -
date指令:设置日期date -s 字符串时间 -
cal指令:查看日历#不加选项,显示本月日历 cal [选项] #查看整年的日历 cal 2019
2.5.5、搜索查找类
-
find指令:将从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。find [搜索范围] [选项]选项说明:
选项 功能 -name<查询方式> 按照指定的文件名查找模式查找文件 -user<用户名> 查找属于指定用户名所有文件 -size<文件大小> 按照指定的文件大小查找文件 -
locate指令:可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻locate 搜索文件特别说明: 由于
locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。 -
grep指令和管道符号|:grep过滤查找,管道符|表示将当前一个命令的处理结果输出传递给后面的命令处理。grep [选项] 查找内容 源文件 #将cat的结果给grep进行过滤 cat 文件 | grep -n 查找内容常用选项:
选项 功能 -n 显示匹配行及符号 -i 忽略字母大小写 -c 计算复合范本样式的列数 -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -v 反转查找。 -n 在显示符合范本样式的那一列之前,标示出该列的编号。 -w 只显示全字符合的列。 -x 只显示全列符合的列。 -
wc命令统计指定文本文件的行数,字数,字符数
常用参数:
-c:统计输出的字节数-l:统计输出行数-L:统计输出最长一行的长度-w:统计输出单词数
2.5.6、压缩和解压缩类
-
gzip/gunzip指令:分别用于压缩和解压缩#压缩文件,只能将文件压缩为*.gz文件,压缩后原文件不保留 gzip 文件 #解压缩文件命令 gunzip 文件.gz -
zip/unzip指令:分别用于压缩和解压缩#压缩 zip [选项] 压缩后文件名.zip 要压缩的内容 #解压缩 unzip [选项] 压缩文件.zipzip常用选项:
-r:递归压缩,即压缩目录
unzip常用选项:
-d:指定解压后文件的存放目录
-
tar指令:打包指令,做好打包后的文件是.tar.gz的文件#打包内容 tar [选项] XXX.tar.gz 打包内容 #将多个文件打包成tar.gz文件 tar -zcvf a.tar.gz 1.txt 2.txt #将tar.gz文件进行解压 tar -zxvf a.tar.gz #解压时指定解压目录,C要大写,指定的解压目录要存在 tar -zxvf a.tar.gz -C 路径
选项说明:
| 选项 | 功能 |
|---|---|
| -c | 产生.tar打包文件 |
| -v | 显示详细信息 |
| -f | 压缩和解压都需要,用于指定压缩后的tar.gz文件名 |
| -z | 打包同时压缩 |
| -x | 解包.tar文件 |
注意: 当有多个选项时,f选项要在最后,即指定压缩后文件名。其余指令不分先后。
2.6、组管理和权限管理(难点、重点)
2.6.1、Linux组基本介绍
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有(所有者、所在组、其他组)的概念。
其他组:除去文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
2.6.2、文件/目录所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
-
查看文件的所有者
ls -ahl -
修改文件所有者
#修改文件所有者 chown [参数] 用户名 文件名 #同时修改文件的所有者和所有组 chown [参数] 新用户名:新组 文件名/目录名 -R:如果是目录则使其下所有子文件或目录递归生效
2.6.3、文件/目录所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在组。
-
查看文件/目录所在组
ls -ahl -
修改文件所在的组
chgrp [参数] 组名 文件名/目录名 -R:如果是目录则使其下所有子文件或目录递归生效
2.6.4、改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
-
改变用户所在组
usermod -g 组名 用户名 #改变该用户登录的初始目录 usermod -d 目录名 用户名
2.6.5、权限的基本介绍
ls -l
#显示内容
-rw-r--r-- 1 fdk student 0 6月 24 09:38 1.txt
-
0-9位说明:
- 第0位确定文件类型
d:目录、-:普通文件l:软链接c:字符设备(键盘鼠标)b:块文件(硬盘))
- 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。–User
- 第4-6位确定所属组(同用户组的)拥有该文件的权限。–Group
- 第7-9位确定其他用户拥有该文件的权限。–Other
- 第0位确定文件类型
-
权限后面的数字:
如果是文件,则表示硬链接的数,如果是目录,则表示该目录下子目录的个数
-
再接着是文件的所有者
-
文件所在组
-
文件大小,如果是目录,统一为4096
-
文件最后的修改时间
-
文件名
2.6.6、rwx权限详解
r+w+x = 4+2+1
rwx作用到文件r:代表可读,可以读取查看内容,数字表示为4w:代表可写,可以修改,但是不代表可以删除文件,删除一个文件的前提是对该文件所在目录有写权限,才能删除该文件。数字表示为2x:代表可执行,可以被执行,数字表示为1
rwx作用到目录r:代表可读,ls查看目录内容w:代表可写,可以修改,目录内创建+删除+重命名文件x:代表可执行,可以进入该目录
2.6.7、修改权限-chmod
-
通过chmod指令,可以修改文件或目录的权限。
-
第一种:+、-、=变更权限
规则:u=所有者;g=所有组;o=其他人;a=所有人(u,g,0的总和)
chmod u=rwx,g=rx,o=x 文件目录名:所有者添加读写执行的权限、所在组添加读执行权限、其他人执行权限。chmod o+w 文件目录名:其他人添加写的权限chmod a-x 文件目录名:所有人去除执行权限
-
第二种:通过数字修改权限
规则:r=4,w=2,x=1,rwx=7
chmod u=rwx,g=rx,o=x 文件目录名相当于chmod 751 文件目录名
2.7、任务调度
2.7.1、crond任务调度
crontab进行定时任务设置。
-
概述
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:
- 系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如对MySQL数据库的备份。
-
基本语法
crontab [选项] -
常用选项
选项 功能 -e 编辑crontab定时任务 -l 列出crontab任务列表 -r 删除当前用户所有的crontab任务
| -i | 删除前会有提示 |
2.7.2、任务调度案例
-
快速入门
- 设置任务调度文件:
/etc/crontab - 设置个人任务调度。执行
crontab -e命令。 - 接着输入任务的到调度文件
- 如:
*/1 * * * * ls -l /etc/ > /tmp/to.txt - 意思是每小时的每分钟分钟执行
ls -l /etc/ > /tmp/to.txt命令
- 设置任务调度文件:
-
参数细节说明
5个占位符的说明
项目 含义 范围 第一个* 一个小时当中的第几分钟 0-59 第二个* 一天中的第几个小时 0-23 第三个* 一个月中的第几天 1-31 第四个* 一年中的第几月 1-12 第五个* 一周中的星期几 0-7(0,7都代表周日) 特殊符号说明
特殊符号 含义 * 代表时间,比如第一个“*”就代表一个小时中每分钟都执行一次 , 代表不连续时间。比如 0 6,8,20 * * *,就代表在每天的6点0分,8点0分,20点0分都执行一次。- 代表连续的时间范围。比如 0 5 * * 1-6,就代表在周一到周六的凌晨5点整执行一次*/n 代表每隔多久执行一次。比如 */20 * * * *,代表每隔10分钟执行一次
2.7.3、crond相关指令
crontab -r:终止任务调度crontab -l:列出当前有哪些任务调度service crond restart:重启任务调度
2.7.4、定时备份MySQL数据库
-
创建sh文件:
/home/fdk/mysqlbak.sh -
编辑内容
/usr/bin/mysqldump -u root -proot Swissmic_WMS > /home/data.bak -
添加
crontab定时#辩解cron定时任务 sudo crontab -e #每天凌晨3点备份一次 0 3 * * * /home/fdk/mysqlbak.sh
2.8、磁盘分区与挂载
2.8.1、分区的方式
- mbr分区
- 最多支持四个系统
- 系统只能安装在主分区
- 扩展分区要占一个主分区
- MBR最大只支持2TB,但拥有最好的兼容性
- gpt分区
- 支持无限多个主分区(但操作系统可能限制,比如Windows下最多128个分区)
- 最大支持18EB的大容量(EB=1024PB,PB=1024TB)
- Windows7 64位以后支持gpt
2.8.2、Linux分区
-
原理介绍
- Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
-
硬盘说明
- Linux硬盘分
IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘 - 对于IDE硬盘,驱动器标识符为
hdx~,其中hd表明分区所在设备的类型,这里是指IDE硬盘了。x为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~代表分区,前四个分区用数字1-4表示,他们是主分区或扩展分区,从5开始就逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hda2表示为第二个IDE硬盘上的第二个主分区或扩展分区。 - 对于SCSI硬盘则标识为
sdx~,SCSI硬盘使用sd来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
- Linux硬盘分
-
lsblk指令查看系统分区情况lsblk lsblk -f
2.8.3、磁盘情况查询
-
查询系统整体磁盘使用情况
df -h -
查询指定目录的磁盘占用情况
du -h /目录查询指定目录的磁盘占用情况,默认为当前目录
-s:指定目录占用大小汇总-h:带计量单位-a:含文件--max-depth=1:子目录深度-c:列出明细的同时,增加汇总值
-
磁盘情况-工作实用指令
-
统计/home文件夹下文件的个数,grep过滤类型以
-开头的。ls -l /home | grep "^-" | wc -l -
统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l -
统计/home文件夹下文件的个数,包括子文件夹内的
ls -lR /home | grep "^-" | wc -l -
统计文件夹下目录的个数,包括子文件夹内的
ls -lR /home | grep "^d" | wc -l -
以树状显示目录结构
tree /home/
-
2.9、网络配置
2.10、进程管理
2.10.1、基本介绍
- 在Linux中,每个执行的程序都称为一个进程。每个进行都分配一个ID号。
- 每个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
- 每个进程都可能以两种方式存在。前台与后台,所谓前台进程就是用户目前屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
2.10.2、显示系统执行的进程
-
基本介绍
ps命令是用来查看目前系统中,有哪些正在执行,以及他们执行的状况,可以不加任何参数。一般为ps -auxps显示的信息选项
字段 说明 PID 进程识别号 TTY 终端机号 TIME 此进程所占CPU总时间 CMD 正在执行的命令或进行名 MEM 占用内存 VSZ 使用的虚拟内存 RSS 使用物理内存情况 STAT 进程状态,R代表运行,S代表休眠,Z僵死进程,T被跟踪或被停止,D短期等待,N表示进程优先级比普通优先级更低。 START 启动时间 -
常用命令:
ps -a:显示当前终端的所有进程信息ps -u:以用户的形式显示进进程信息ps -x:显示后台进程运行的参数
-
ps详解查看单一进程命令:
ps -aux | grep xxx,使用grep指令进行进程过滤 -
应用实例
-
以全格式显示当前所有进程,查看进程的父进程
ps -ef是以全格式显示当前所有进程-e显示所有进程,-f全格式
-
ps -ef | grep sshd:可以查看sshd父进程参数详解
参数 含义 C CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 STIME 进程启动的时间 TTY 完整的终端名称 TIME CPU时间
-
-
获取进程ID:
ps -aux|grep 进程名| grep -v grep | awk '{print $2}'awk获取进程单个值- -v:反向搜索,去除带有grep的进程
- $2:管道符
|传过来的进程数据的第二个值,也就是进程ID号。
2.10.3、终止进程kill和killall
-
介绍
若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程。使用
kill命令来完成此项任务。 -
基本语法
#通过进程号杀死进程 kill [选项] 进程号 #通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变的很慢时很有用。 killall 进程名称 -
常用选项
-9:表示强迫进程立即停止
2.10.4、查看进程树
-
基本语法
#以进程树的形式查看进程信息 pstree [选项] -
常用选项
-p:显示进程的PID-U:显示进程的所属用户
2.10.5、服务管理(service)管理
-
介绍
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql、sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。系统中的服务,可以通过
ls -l /etc/init.d/进行查看 -
service管理命令
service 服务名 start|stop|restart|reload|status #最新的一些Ubuntu系统中,使用systemctl代替service -
防火墙(
Ubuntu:ufw)#查看防火墙状态 sudo ufw status #开启防火墙 sudo ufw enable #关闭所有外部对本机的访问,但本机访问外部还是正常的 sudo ufw default deny #关闭防火墙 sudo ufw disable #开启/禁用 sudo ufw allow|deny [service] #打开或关闭某个端口,例如 sudo ufw allow smtp #允许所有的外部IP访问本机的25/tcp (smtp)端口 sudo ufw allow 22/tcp #允许所有的外部IP访问本机的22/tcp (ssh)端口 sudo ufw allow 53 #允许外部访问53端口(tcp/udp) sudo ufw allow from #192.168.1.100 允许此IP访问所有的本机端口 sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53 sudo ufw deny smtp #禁止外部访问smtp服务 sudo ufw delete allow smtp #删除上面建立的某条规则 -
服务的运行级别(
runlevel)
查看运行级别的几种方法
runlevelsystemctl get-defaultwho -r- 等
2.10.6、动态监控进程
-
介绍
top与ps命令很相似。他们都是用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。 -
基本语法
top [选项] -
选项说明
选项 功能 -d 秒数 指定top命令每隔几秒更新,默认是3秒在top命令的交互模式中可以执行的命令 -i 使top不显示任何闲置或者僵死进程 -p 通过指定监控进程ID来仅仅监控某个进程的状态 -
交互操作说明
操作 功能 P以 CPU使用率排序,默认就是此项M以内存的使用率排序 N以 PID排序q退出 top -
使用案例
- 监控指定用户:在top中,按u键,输入用户名即可。
- 终止指定进程:在top中,按k键,输入要结束的进程ID号即可。
- 指定刷新时间,在shell目录中,以
top -d 5,启动top,即是5秒的刷新建个。
2.10.7、监控网络状态
-
查看系统网络情况
netstat基本语法
netstat [选项] #查看所有网络 netstat -anp #监听指定服务的网络状态 netstat -anp|grep sshd选项说明
-an:按一定顺序排列输出-p:显示哪个进程在调用
-
检测主机连接命令
ping:是一种网络检测工具,主要是用于检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障。
3、shell编程
3.1、shell脚本的执行方式
3.1.1、脚本格式要求
-
脚本开头以
#!/bin/bash,指定执行环境 -
脚本需要有
x权限即执行权限,chmod 755 xxx.sh
3.1.2、后台方式运行脚本
#用途:在后台运行
#nohup和&
#一般两个一起用
nohup command &
3.2、shell变量
3.2.1、shell变量的介绍
-
Linux Shell中的变量分为,系统变量和用户自定义变量。 -
系统变量:
$HOME、$PWD、$SHELL、$USER等等。 -
显示当前shell中所有变量:
set
3.2.2、shell变量的定义
-
基本语法
- 定义变量:
变量=值 - 撤销变量:
unset 变量 - 声明静态变量:
readonly 变量
- 定义变量:
-
定义变量的规则
- 变量名称可以由字母数字下划线组成,但是不能以数字开头。
- 等号两侧不能由空格
- 变量名称一般习惯为大写
-
注意事项:
- 静态变量不能撤销。
- 使用变量时,前面需要加上
$符号
-
将命令的返回值赋给变量
#第一种,使用反引号将命令括起来 A=`ls -la` #第二种,使用$()把命令括起来 A=$(ls -la) #两种方式等价
3.2.3、设置环境变量
-
基本语法
#将shell变量输出为环境变量 export 变量名=变量值 #让修改的配置信息立即生效 source 配置文件 #查询环境变量的值 echo $变量名 -
快速入门
- 在
/etc/profile文件中自定义变量 - 查看定义的环境变量的值
- 在另外一个shell程序中使用变量
**注意:**在
/etc/profile文件中设置后使用source /etc/profile进行刷新生效 - 在
-
多行注释
:<<!和!之间的内容都会被注释:<<! 内容1 内容2 内容3 !
3.2.4、位置参数变量
-
介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
-
基本语法
#n为数字,0-9,$0代表命令本身,10以上的参数使用${10} $n #代表命令行中所有的参数,$*把所有参数看出一个整体 $* #也代表命令行中的所有参数,但是是一个列表形式 $@ #代表命令行中所有参数个数 $#
3.2.5、预定义变量
-
基本介绍
就是shell设计者事先定义好的变量,可以直接在shell脚本中使用
-
基本语法
$$:当前进程的进程号(PID)$!:后台运行的最后一个进程的进程号(PID)$?:最后一次执行的命令的返回状态。如果这个变量的值为0,正面上一个命令正确执行;如果这个变量的值为非0(具体数,自己决定),则证明上一个命令执行不正确
3.3、运算符
-
$((运算式))或$[运算式] -
expr m + n:expr中,运算符两侧加空格 -
expr m - n -
expr \*,/,%:乘、除、取余乘号
*要加反斜杠进行转义
3.4、判断语句
-
基本语法
#条件两侧要有空格 [ 条件 ]yanzheng #非空返回true,可以使用$?验证(0为true,>1为false) [] #返回false -
常用判断条件
-
两个整数比较
条件 含义 = 字符串比较 -lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge 大于等于 -ne 不等于 -
按文件权限进行判断
条件 含义 -r 有读的权限 -w 有写的权限 -x 有执行的权限 -
按照文件类型进行判断
条件 含义 -f 文件存在并且是一个常规的文件 -e 文件存在 -d 文件存在并且是一个目录
-
3.5、流程控制
3.5.1、if判断
-
基本判断
#第一种 if [ 判断语句 ];then 程序 fi #第二种 if [ 判断语句 ] then 程序 fi注意事项:
- [ 条件判断式 ],中括号和条件判断式之间必须有空格
- 推荐使用第二种方式
3.5.2、case语句
-
基本语法
case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; ...省略... *) 如果变量的值都不是以上的值,则执行此程序 ;; esac #结尾反着写
3.5.3、for循环
-
基本语法1
for 变量 in 值1 值2 值3... do 程序 done -
基本语法2
for((初始值;循环控制;变量变化)) do 程序 done
3.5.4、while控制
基本语法
while [ 条件判断式 ]
do
程序
done
3.6、读取控制台输入
-
基本语法
read(选项)(参数) #10秒内输入数值 read -t 10 -p "请输入一个数:" NUM echo "你输入的数是:" NUM -
选项
-p:指定读取值时的提示符-t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,不再等待
-
参数
- 变量:指定读取值的变量名
3.7、系统函数
3.7.1、basename基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
#basename命令会删掉所有的前缀包括最后一个`/`字符,然后将字符串显示出来
basename[pathname][suffix]
basename[string][suffix]
#suffix为后缀,如果指定了,basename会将pathname或string中的suffix去掉
3.7.2、dirname基本语法
功能:返回完整路径最后/的前面的部分,常用于返回路径部分
#从给定的包含绝对路径的文件名中去除文件名,然后返回剩下的路径。
dirname 文件绝对路径
3.7.3、自定义函数
[function] funname[()]
{
程序
返回值
}
#调用直接写函数名:funname
示例
function getSum(){
SUM=$[$n1+$n2]
echo "和是:"$SUM
}
read -p "请输入第一个数n1:"n1
read -p "请输入第一个数n2:"n2
#调用getSum
getSum $n1 $n2
1095

被折叠的 条评论
为什么被折叠?



