Linux基础知识
目录
------------------------------------------------------------------------------
下载地址:https://mirrors.aliyun.com/centos-vault/
swap为交换分区,一般和与运行内存等大即可
安装完成后需要将进行一些配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改网络信息 --修改 ONBOOT=yes BOOTPROTO=static --添加 IPADDR=192.168.80.128 NETMASK=255.255.255.0 GATEWAY=192.168.80.2 DNS1=114.114.114.114 删除------ UUID systemctl restart network.service #重启网卡重新加载配置文件 nmcli c reload +网卡名 #centos8重启网卡重新加载配置文件 systemctl stop firewalld #(本次服务内关闭防火墙) systemctl disable firewalld #(禁用防火墙服务),本次开机不生效 #去除软件安装限制 vi /etc/selinux/config SELINUX=disabled
centos8在学习环境下安装的时候软件选择需要勾选以下两个,如果是生产环境直接勾选最小安装即可
Centos8虚拟机有时候启动会出现连接不上的情况
如上图,发现ens33网卡没有相关配置信息
查看网卡状态发现ens33处于委托管状态
查看networking工作状态发现不可用,使用命令开启networking即可解决问题
nmcli networking #查看networking工作状态 nmcli networking on|off #通过NetworkManager启用或禁用网络 nmcli connection reload ens33 #重启网卡 nmcli connection up ens33 #网卡启动命令 nmcli connection down ens33 #网卡停止命令 nmcli device status #查看网卡状态
桥接模式(V0):虚拟系统可以和外部系统通讯,但容易造成IP冲突
NAT模式(V8):网络地址转换模式,虚拟系统可以和外界进行通讯,不造成IP冲突
仅主机模式(V1):仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。
相对于NAT模式而言,仅主机模式不具备NAT功能,因此在默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet
1、设置开机启动VM并打开创建好的虚拟机
①找到需要开启的虚拟机路径,这里使用CentOS8.vmx做示范
vm快捷方式--右键属性--目标--在其后添加CentOS8.vmx的文件地址并使用双引号标注,中间添加 -x ,添加完成之后应用保存实例:
"C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -x "D:\zrh\centos8.3\CentOS8.vmx"
将修改好的快捷方式拖入到windows开机启动项中:
本机开机启动项:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
重启即可
2、设置关闭托盘显示
vm虚拟机---编辑---首选项
3、安装VM Tools
①点击”虚拟机“---安装vmare tools
②打开光盘,将tar文件解压
tar -zxvf VMwareTools-10.3.22-15902021.tar.gz
③执行安装程序
./vmware-install.pl -d
注意:安装VM Tools时需要系统安装gcc,执行命令gcc -v可以检验是否安装了gcc,如果没有则需要yum安装
4、VMware开机自动启动虚拟机后台运行
Vmware Workstation和Vbox都提供了GUI界面及命令的方式供用户管理虚拟机,通过命令方式可以做一些GUI界面不方便做的事,比如让创建的指定虚拟机随系统开机启动
命令工具在安装目录可以找到,Vmware Workstation为vmrun.exe,Vbox为VBoxManage.exe
Vmware Workstation启动指定虚拟机的命令为:vmrun -T (ws|fusion|player) start "指定虚拟机vmx文件路径" [gui|nogui] #例如: vmrun -T ws start "D:\systemiso\centos8.vmx" nogui #ws代表workstation,nogui代表无界面后台运行
vboxmanage startvm "虚拟机名称" [--type gui|sdl|headless|separate] #无界面启动的话,添加--type headless参数,例如: vboxmanage startvm "centos vbox" --type headless
第一种:策略组执行bat程序实现
① 新建文件 VmStart.bat
② 组策略编辑器
Win+R ----- gpedit.msc
用户配置 ----- Windows设置 ----- 脚本(登录|注销) 右边 ----- 名称下选择 “登录”
添加刚才编写好的VmStart.bat即可
第二种:命令创建一个快捷方式,将其放入启动文件夹
① 右键空白处选择 新建 ---- 快捷方式,将命令整个填入对象位置的输入框中
② 打开启动文件夹,将快捷方式放进去
①虚拟机开启共享
②Linux下文件路径
/mnt/hgfs/
注意:此种方式只适合Linux与主机在同意终端上,实际生产环境中都是利用远程管理工具进行连接,比如Xshell、XFtp
1) linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
2)深刻理解 linux树状文件目录是非常重要的,记住一句经典的话:在Linux 世界里,一切皆文件
树状目录结构:
/bin:普通用户和管理员都可以执行的命令字
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,只有管理员才能执行(关机、重启等)
/boot:存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/dev:设备文件存放目录,类似于 windows的设备管理器,把所有的硬件用文件的形式存储
/etc:所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库时mysql的配置文件都在/etc下
/home:普通用户的家目录
/root:管理员的家目录
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下
/mnt:临时设备挂载目录,系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就查看相应的内容了
/proc:进程的所在目录,里面的数据都在内存中
/tmp:临时文件安装目录
/var:常变文件存放目录(日志文件、邮件文件等)
/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DIL文件,几乎所有的应用程序都需要用到这些共享库
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv:service缩写,该目录存放一些服务启动之后需要提取的数据
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
/opt:这是给主机额外安装软件所存放的目录,如安装ORACLE 数据库就可放到该目录下,默认为空
/usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序
/selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
Linux系统中如何分辨文件类型
蓝色=目录、黑色=普通文件、浅蓝色=符号链接(快捷方式)、红色=压缩包
黑底黄字=设备文件 硬盘 sda、黑底红字=警告故障文件、绿色=带有执行权限的文件、紫色=图片 模块文件
vim filename #正常打开 vim +8 filename #打开文件,并将光标置于第8行 vim + filename #打开文件,将光标置于最后一行 vim +/word filename #打开指定搜索单词的位置,按n查找下一个,按N查找上一个
命令模式到输入模式按键解析
i:在当前位置插入数据
a:追加数据
o:在当前行后面开启一个新的输入行
I:行首
A:行尾
O:上一行
底线命令模式
:wq #保存并退出 :q! #不保存直接退出 :set nu #显示行号 :set nonu #取消显示行号 :50,60 d #删除50-56行的数据 :w [filename] #将编辑的数据储存成另一个档案(类似另存新档) :s/old/new/g #替换字符串,g表示替换当前行所有 否则只替换当前行第一个 :3,8s/old/new/g #查找指定行 :g/old/s//new/g #替换全文 /pattern #搜索指定的字符串,并将结果高亮显示 :noh #取消字符串高亮显示
命令模式
yy #复制游标所在的那一行 nyy #复制光标所在的向下 n 行 p #粘贴到当前行下 dd #删除当前行 ndd #删除光标所在的向下 n 行 gg #回到第一行 G #到最后一行 nG #快速跳转至第n行 p, P #p为将已复制的数据在光标下一行贴上,P则为贴在游标上一行 Ctrl+f #屏幕『向下』移动一页,相当于 [Page Down]按键 Ctrl+b #屏幕『向上』移动一页,相当于 [Page Up] 按键 0 或功能键[Home] #移动到这一行的最前面字符处 $ 或功能键[End] #移动到这一行的最后面字符处 /word #向光标之下寻找一个名称为 word 的字符串 ?word #向光标之上寻找一个字符串名称为 word 的字符串 u #撤销上一次操作 Ctrl+r #重做上一个动作 . #重复前一个动作的意思
查看内存信息:cat/proc/meminfo
查看cpu信息:cat/proc/cpuinfo
重启与关机
shutdown -h now #立该进行关机 shudown -h 1 #"hello,1分钟后会关机了” shutdown -r now #现在重新启动计算机 halt #关机,作用和上面一样. reboot #现在重新启动计算机 sync #把内存的数据同步到磁盘
不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,虽然目前的shutdown/reboot/halt等命令均已经在关机前进行了sync,但还是小心驶得万年船
登录与注销
登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。
可以利用普通用户登录,登录后再用“su - 用户名”命令来切换成系统管理员身份.
在提示符下输入 logout 即可注销用户
logout注销指令在图形运行级别无效,在运行级别3下有效
返回上一级目录:cd ..
列出当前所在目录路径:pwd
列出当前目录中的内容:ls
/ = 操作系统的起始路径,即根路径
查看硬盘信息:fdisk -l
/dev/sda 操作系统中第一块硬盘的名称以及所在路径,sd=硬盘类型,a=第一块,同理第二块/dev/sdb
Linux操作系统中一切皆文件
[root@HK9527 Desktop]# 执行的命令 [当前登录用户名称@主机名称 当前所在路径]#
#:用户身份为超级管理员
$:用户身份为普通用户
组和用户的关系
1、用户必须有一个基本组,如果该组中有基本成员,该组不允许被删除
2、一个用户可以有多个附加组,如果附加组没有基本成员,该组可以被删除
3、建立一个用户时,如果没有指定组,则会建立一个与用户名同名的组
useradd -u #指定 uid号 -g #指定 基本组 -G #指定 附加组 -s #指定用户登录的命令解释器 -s /sbin/nologin #不允许登录 -s /bin/bash #允许登录 -M #无家目录 useradd -d /tmp/hpome test #给新创建的用户test指定家目录 usermod(用户修改命令,选项同上) userdel -r #删除用户的家目录 userdel #删除用户,但不删除家目录 passwd 用户名 #给用户名设定密码 -S #查看用户密码状态 -l #锁定用户 -u #解锁用户密码 -d #删除用户密码 chage -M 90 用户名 #修改用户密码的最长有效期
查询用户信息指令
id 用户名 #例如:id root
切换用户指令
su - 用户名 #例如:su - root
从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
当需要返回到原来用户时,使用exit/logout指令
查看当前用户/登录用户
<<root@HK9527 ~>># who am i #root <<root@HK9527 ~>># su - zrh [zrh@HK9527 ~]$ who am i #root [zrh@HK9527 ~]$ whoami #zrh [zrh@HK9527 ~]$ exit #登出 <<root@HK9527 ~>># whoami #root
who am i 为查询第一次登录到Linux服务器的用户名
whoami 为查询当前用户名
组命令
groupadd 组名 #创建组 groupadd -g 1005 组名 #指定gid号创建组 groupmod(组修改命令,选项同上) groupdel #删除组 groupmod -n old new #修改组名字 groups [username] #查看用户所在组
案例演示
#创建一个组指定gid为1200名称为mojiao的组,新建用户zwj并将其放入到mojiao组里 groupadd -g 1200 mojiao useradd -g mojiao zwj #修改zwj的组为test组 usermod -g test zwj
/etc/passwd 保存了系统中所有用户的信息
uid用户的身份标识0为超级管理员、500-60000普通用户、1-499 程序用户(不能登录系统)
vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
字段1:用户名
字段2:密码占位符
字段3:uid号
字段4:用户的基本组id号
字段5:用户信息记录位置(废弃)
字段6:用户的家目录
字段7:用户登录系统后用什么命令解释器
/etc/shadow 记录系统中用户的密码信息
root : $6$Ex0t5kJ3IesoOavmq9ANH.rsg5OAsox32NpN.WaV0GeKXNSkbP/QN3z1 : : 0 : 99999 : 7 : : :
字段1:用户名
字段2:通过sha-512以及salt值加密后的密文
字段3:距离1970年1月1日密码最近一次的修改时间
字段4:密码的最短有效期
字段5:密码的最长有效期(一般建议90天)
字段6:密码过期前7天警告
字段7:密码的不活跃期
字段8:密码距离1970年1月1日的失效时间
/etclgroup文件组(group)的配置文件,记录Linux包含的组的信息
mojiao:x:1200:
字段1:组名
字段2:口令
字段3:组标识号
字段4:组内用户列表
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
命令: init [0123456]
通过init 来切换不同的运行级别
init 0 #关机 init 6 #重启
指定默认运行级别
在centos7以前,在 /etc/inittab文件中进行修改
在centos7以后进行了如下简化:
multi-user.target = init 3
graphical.target = init 5
①启动系统,进入开机界面,在界面中按“e”进入编辑界面
②使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh
③输入完成后,直接按快捷键:ctrl+x 进入单用户模式
④在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键
⑤在新的一行输入:passwd, 完成后按键盘的回车键,输入密码,然后再次确认密码
⑥在新的一行输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键
⑦在新的一行输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键
Linux命令是区分大小写的
-bash: abcd: command not found #命令敲错了或者命令未安装
命令的参数如果是单词一般加“-”,如果是字母或者缩写一般加“--”
pwd #显示当前工作目录的绝对路径
ls [选项] [目录或是文件] 常用选项 -a:显示当前目录所有的文件和目录,包括隐藏的 -l:以列表的方式显示信息 -h:以人类可以看懂的方式显示文件大小 -R:递归显示目录中子目录的内容 du -sh 目录 #查看目录的大小
cd [参数] #功能描述:切换到指定目录 cd #回到自己的家目录 cd .. #回到当前目录的上一级目录
mkdir #指令用于创建目录 基本语法: mkdir [选项] 要创建的目录 常用选项 -p:创建多级目录应用实例 案例1:创建一个目录 /home/dog #mkdir /home/dog 案例2:创建多级目录/home/animal/tiger #mkdir -p /home/animal/tiger
案例3:一次性创建多个子目录
#mkdir -p case/{a,b,c}/init
这种写法case文件夹下有a、b、c三个文件夹,这三个文件夹里都有init这个子文件夹
rmdir [选项] #删除空目录 rmdir删除的是空目录,如果目录下有内容时无法删除的
touch #创建空文件 基本语法:touch 文件名称
cp #拷贝文件到指定目录 基本语法 cp [选项] 常用选项 -r :递归复制整个文件夹>应用实例 案例1:将/home/hello.txt拷贝到/home/bbb目录下 #cp hello.txt /home/bbb 案例2:递归复制整个文件夹,比如将/home/bbb 整个目录,拷贝到/opt #cp -r /home/bbb /opt 案例3:强制覆盖不提示的方法 #\cp -r /home/bbb /opt
rm #移除文件或目录 rm [选项] 删除的文件或目录 常用选项 -r:递归删除整个文件夹 -f:强制删除不提示 应用实例 案例1:将/home/hello.txt删除 #rm /home/hello.txt 案例2:递归删除整个文件夹/home/bbb #rm -rf /home/bbb
mv #移动文件与目录或重命名 基本语法 mv oldNameFile newNameFile #功能描述:重命名 mv /temp/movefile /targetFolder #功能描述:移动文件 应用实例 案例1:将/home/cat.txt文件重新命名为pig.txt案例 #mv /home/cat.txt /home/pig.txt 2:将/home/pig.txt文件移动到/root目录下 #mv /home/pig.txt /root/ 案例3:移动整个目录,比如将/opt/bbb移动到/home下 #mv /opt/bbb /home/
cat #查看文件内容 cat [选项] 要查看的文件 常用选项 -n :显示行号 应用实例 案例1:/etc/profile文件内容,并显示行号 #cat -n /etc/profile cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令"| more" #cat -n/etc/profile | more
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令),详见操作说明 基本语法:more 要查看的文件 操作功能说明 空格键:向下翻一页 Enter:向下翻一行 q:代表立刻离开more,不再显示该文件内容 ctrl+F:向下滚动一屏 ctrl+B:返回上一屏 =:输出当前行的行号 :f 输出文件名和当前行的行号
less 指令用来分屏查看文件内容,它的功能与more 指令类似,但是比 more指令更加强大,支持各种显示终端。 less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。 基本语法:less 要查看的文件 操作功能说明 空格键:向下翻动一页 [pagedown]:向下翻动一页 [pageup]:向上翻动一页 /字符串:向下搜寻"字符串"的功能(n:向下查找;N:向上查找) q:离开less程序
echo 输出内容到控制台 基本语法 echo [选项] [输出内容] 应用实例 案例:使用echo 指令输出环境变量,比如输出$PATH $HOSTNAME, #echo $HOSTNAME
head #用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容 基本语法 head 文件 #功能描述:查看文件头10行内容 head -5 文件 #功能描述:查看文件头5行内容,5可以是任意行数 应用案例:查看/etc/profile的前面5行代码 #head -5 /etc/profile
tail #用于输出文件中尾部的内容,默认情况下tail 指令显示文件的前10行内容 基本语法 1) tail 文件 #功能描述:查看文件尾10行内容 2) tail -5 文件 #功能描述:查看文件尾5行内容,5可以是任意行数 3) tail -f 文件 #功能描述:实时追踪该文档的所有更新 应用实例 案例1:查看/etc/profile 最后5行的代码 #tail -5 /etc/profile 案例2:实时监控 mydate.txt,看看到文件有变化时,是否看到实时的追加hello,world #tail -f /home/mydate.txt
>输出重定向 >>追加 基本语法 1) ls -l > 文件 #功能描述:列表的内容写入文件中(覆盖写) 2) ls -al >>文件 #功能描述:列表的内容追加到文件末尾 3) cat 文件1 > 文件2 #功能描述:将文件1的内容覆盖到文件2 4) echo "内容" >> 文件 #追加 应用实例 案例1:将/home目录下的文件列表写入到/home/info.txt中,覆盖写入 #ls -l /home > /home/info.txt[如果info.txt没有,则会创建] 案例⒉:将当前日历信息追加到/home/mycal文件中 #cal >> /home/mycal
history #查看已经执行过历史命令,也可以执行历史指令 基本语法 history #功能描述:查看已经执行过历史命令 应用实例 案例1:显示所有的历史命令 #history 案例2:显示最近使用过的10个指令 #history 10 案例3:执行历史编号为5的指令 #!5
find #指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端 基本语法: find [搜索范围] [选项] 选项说明 -name:按照指定的文件名查找文件 -user:查找属于指定用户名所有文件 -size:按照指定文件大小查找文件
-atime:在过去n天内被读取过的文件
-ctime:在过去n天内被修改过的文件
-cmin:在过去n分钟内修改过的文件 应用实例 案例1:根据名称查找/home目录下的hello.txt 文件 #find /home -name hello.txt 案例2:查找/opt目录下,用户名称为nobody 的文件 #find /opt -user nobody 案例3:查找整个linux系统下大于200M的文件(+n大于、-n小于、n等于,单位有k,M,G) #find / -size +200M
案例4:查找整个linux系统下在过去10天内被读取过的文件
#find / -atime -10
exec参数说明
-exec参数后面跟的是command命令,他的终止是以;为结束标志的,考虑到各个系统中;的不同含义,所以前面加反斜杠
{}代表前面find查找出来的结果
案例5:查找当前目录下名字包含tar.gz且10天前修改过的文件,并将其删除
#find . -name "*tar.gz" -ctime +10 -exec rm -rf {} \;
#-ctime +10 表示10天之前(不含10天之前的当天)修改过的文件
#-ctime -10 表示10天之内(含10天之前的当天)修改过的文件
#-ctime 10 表示10天之前的当天之内修改过的文件
locate #可以快速定位文件路径 locate指令利用事先建立的系统中所有文件名称及路径的 locate数据库实现快速定位给定的文件。 Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻 基本语法: locate 搜索文件 特别说明:由于locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。 应用实例 案例1:请使用locate指令快速定位hello.txt文件所在目录 #updatedb #locate hello.txt
which #可以查看某个指令在哪个目录下 比如ls指令在哪个目录 #which Is
grep指令和管道符号│ grep过滤查找,管道符,"|",表示将前一个命令的处理结果输出传递给后面的命令处理。 基本语法 grep [选项] 查找内容 源文件 选项说明 -n:显示匹配行及行号 -i:忽略字母大小写 应用实例 案例:请在hello.txt 文件中,查找"yes”所在行,并且显示行号 #写法1: cat /home/hello.txt | grep "yes" #写法2: grep -n "yes" /home/hello.txt
gzip、gunzip #gzip 用于压缩文件,gunzip用于解压 基本语法 gzip 文件 #功能描述:压缩文件,只能将文件压缩为*.gz文件 gunzip filename.gz #功能描述:解压缩.gz结尾的文件 应用实例 案例1: gzip压缩,将/home下的hello.txt文件进行压缩 #gzip /home/hello.txt 案例2: gunzip压缩,将/home下的hello.txt.gz文件进行解压缩 #gunzip /home/hello.txt.gz
zip、unzip #zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用的 基本语法 zip [选项] XXX.zip 将要压缩的文件内容 #功能描述:压缩文件和目录的命令unzip [选项] XXX.zip #功能描述:解压缩文件 zip常用选项 -r:递归压缩,即压缩目录 unzip的常用选项 -d <目录>:指定解压后文件的存放目录 应用实例 案例1:将/home下的所有文件/文件夹进行压缩成myhome.zip zip -r myhome.zip /home #将home目录及其包含的文件和子文件夹都压缩 案例2:将myhome.zip解压到/opt/tmp目录下 mkdir /opt/tmp unzip -d /opt/tmp /home/myhome.zip
bzip2 文件名称 #压缩文件 bunzip2 压缩包 # 解压缩 -j = bzip2 tar -jcf /tmp/allfile.tar.bz2 /tmp/allfile tar -jxf /tmp/allfile.tar.bz2 -C /root
tar #打包指令,最后打包后的文件是.tar.gz 的文件 基本语法 tar [选项] XXX.tar.gz 要打包的文件内容 #功能描述:打包目录,压缩后的文件格式.tar.gz 选项说明 -c:产生.tar打包文件 -C:指定解压路径 -v:显示详细信息 -f:指定压缩后的文件名 -z:打包同时压缩 -x:解包.tar文件 应用实例 案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz #tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 案例2:将/home的文件夹压缩成myhome.tar.gz #tar -zcvf myhome.tar.gz /home/ 案例3:将pc.tar.gz解压到当前目录 #tar -zxvf pc.tar.gz 案例4.将myhome.tar.gz解压到 /opt/tmp目录下 #①mkdir /opt/tmp #②tar -zxvf /home/myhome.tar.gz -C /opt/tmp
date #显示当前日期 基本语法 1) date #功能描述:显示当前时间 2) date +%Y #功能描述:显示当前年份 3) date +%m #功能描述:显示当前月份 4) date+%d #功能描述:显示当前是哪一天 5) date "+%Y-%m-%d %H:%M:%S" #功能描述:显示年月日时分秒。这里加引号是因为有空格,如果是+%Y-%M-%D_%H:%M:%S就不需要加引号 应用实例 案例1:显示当前时间信息 #date 案例2:显示当前时间年月日 #date "+%Y-%m-%d" 案例3:显示当前时间年月日时分秒 #date "+%Y-%m-%d %H:%M:%S" date -s 字符串时间 #设置日期时间 案例1:设置系统当前时间,比如设置成2020-11-03 20:02:10 #date -s "2020-11-03 20:02:10"
自动同步时间 yum install ntp -y ntpdate cn.ntp.org.cn 本地搭建NTP服务 service ntpd start #开启本地NTP服务器 ntpdate 192.168.188.100 #客户端同步本地NTP服务器时间
cal #查看日历指令 基本语法 cal [选项] #功能描述:不加选项,显示本月日历 应用实例 案例1:显示当前日历 #cal 案例2:显示2020年日历 #cal 2020
cut #用指定的规则来切分文本,cut的分隔符必须是单个字符 cut -d":" -f1,2,3,4 /etc/passwd #以:切分文件,并显示每行的前4列
sort #排序 sort lucky #对文本中的行进行排序 sort -t' ' -k2 lucky #对每一行的数据按照' '进行切分,按照第二列进行排序 sort -t' ' -k2 -r lucky #逆序 sort -t' ' -k2 -n lucky #按照数值大小进行排序,如果有字母,字母在前
sort -t' ' -k2 -nr lucky #nr往往同时使用
wc #统计单词的数量 <<root@HK9527 ~>># wc /etc/passwd 44 90 2301 /etc/passwd #表示44行,90个单词(单词以空格划分),2301个字符 -l:line -w:word(以空格来分割单词) -c:char
stat #用于显示 inode 内容 stat /etc/passwd #查看 /etc/passwd 文件的inode内容 查看文件的状态 Inode #当前文件在文件系统的唯一标识,类似于ID access #访问时间 modify #修改文件内容时间 change #修改文件元数据信息时间
软链接是指向文件的,硬链接是为了保护文件的
软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径,软连接和原始文件不是同一个文件 基本语法 ln -s [原文件或目录] [软链接名] #功能描述:给原文件创建一个软链接 应用实例 案例1:在/home目录下创建一个软连接myroot,连接到/root目录 #ln -s /root /home/myroot 案例2:删除软连接myroot rm -f /home/myroof 细节说明:当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。 硬链接 ln [原文件或目录] [硬链接名] 硬链接和原始文件使用文件系统中的同一个文件 如果你害怕一个文件被别人误删,你可以使用硬链接保护这个文件 软硬链接在链接文件的时候,推荐使用文件的绝对路径,否则有可能会出现问题
linux与linux之间互传文件 scp 源数据地址(source) 目标数据地址(target) scp apache-tomcat-7.0.61.tar.gz root@192.168.31.44:/opt #传文件 scp root@192.168.31.44:/opt/apache-tomcat-7.0.61.tar.gz ./ #拿文件 scp -r apache-tomcat-7.0.61 root@192.168.31.44:/opt #传文件夹
uniq -c case.txt #在行首显示出现的次数(统计次数),在统计之前需要sort一下
我们可以发现“I”在上图中出现了两次,且数字都为1,这显然不对,所以在统计次数的时候,需要先sort一下再统计,这样才不会出错。
awk -F " " '{print $5}' #表示用awk进行分割,分割依据为空格,然后输出分割后的第5行 awk -F '[ ,]+' '{print $5}' #表示用awk进行分割,先用空格分隔,再用“,”分隔,打印第五行 print $0表示全部打印
权限:文件或目录属于谁,属于哪个组,不同的用户能对该文件进行何种操作。
文件与目录查看权限
文件:ls -lah
目录:ls -ld
字段1:表示文件的类型 d 目录 、- 文件、 l 符号链接、 c 字符型设备比如鼠标键盘、 b block块设备比如硬盘
字段2:文件所属者的权限
如果一个用户对该目录只有x权限,那么此用户是可以进入这个目录,但不能查看目录的内容。
如果该用户对目录下的某个文件具有rw权限,那么即使看不了该目录下的文件,此用户还是可以修改具有rw权限的文件。
字段3:文件所属组的权限
文件所属组内成员对该文件具有的权限
字段4:其他用户的权限(既不是文件的所属者,也不在文件的所属组中)
字段4后面的数字如果是文件的话就表示硬连接数,如果是目录的话就表示子目录数
修改文件权限属性
chmod 对象 运算符号 权限 文件或者目录 对象: u(user所属者) g(goup所属组) o(other其他) a(all所有) 运算符号: + 赋权 - 撤权 = 指定权限 例如: chmod a=--- 目录 chmod g+r 目录 chmod o=rx 目录
改变文件的所属者/所属组
chown 用户 文件
chgrp 组 文件
八进制赋权法
r=4、w=2、x=1
rwxr-xr-x = 755
rw-r--r-- = 644
chmod 644 test.txt
三种特殊权限
1、t 粘滞位
只对目录有效,在目录中建立的文件只有文件的所属者可以删除。
#方法1 chmod 777 /tmp/test chmod o+t /tmp/test #方法2 chmod 1777 /tmp/test
2、sgid
只对目录有效,在目录中建立的文件或者目录的所属组会继承父目录的所属组
#方法1 chmod 777 /tmp/test chmod g+s /tmp/test #方法2 chmod 2777 /tmp/test
3、suid
只对可执行文件有效,当一个可执行文件具有suid权限,无论谁运行该文件,谁就具有该文件所属者的权限
which vim #查找vim路径 chmod u+s /usr/bin/vim #方法1 chmod 4755 /usr/bin/vim #方法2 chmod u-s /usr/bin/vim #取消suid方法 实验:赋权后可以利用普通用户打开shadow文件,删掉其他用户的密码 find /usr/bin -perm 4755 #针对权限进行查询/usr/bin目录中所有具有suid权限的命令
不可变属性
将passwd和shadow文件设置为不可变属性,那么就无法创建新用户,因为往文件里添加不了内容
chattr +i /etc/passwd /etc/shadow #添加不可变属性 lsattr /etc/passwd /etc/shadow #查看文件属性 chattr -i /etc/passwd /etc/shadow #去除不可变属性
umask
目录的最高权限0777(前面的0表示三种特殊权限,默认都为0)
文件的最高权限666(并不是每个文件都具备执行属性,所以默认不给X属性,所以为666)
普通用户的umask默认为0002、root用户umask默认为0022
普通用户创建目录/文件的默认权限为:777-002=775/666-002=664
root用户创建目录/文件的默认权限为:777-022=755/666-022=644
所以要根据公司需要去修改相应的umask值
vim /etc/profile
vim /etc/bashrc
修改用户密码最长有效期(进入文件后第25行)
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
基本语法 crontab [选项] 常用选项 -e:编辑crontab定时任务 -l:查询crontab任务 -r:删除当前用户所有的crontab任务 service crond restart #重启任务调度
crontab -e之后输入
*/1 * * * * ls -l /etc/ > /tmp/case.txt
参数细节说明
#5个占位符的说明项目 第一个*:一小时当中的第几分钟,0-59 第二个*:一天当中的第几小时,0-23 第三个*:一个月当中的第几天,1-31 第四个*:一年当中的第几月,1-12 第五个*:,一周当中的星期几,0-7(0和7都代表星期日) #特殊符号的说明 *:代表任何时间,比如第一个"*"就代表一小时中每分钟都执行一次的意思 ,:代表不连续的时间,比如"0 8,12,16 * * * ",就代表在每天的8点0分,12点0分,16点0分都执行一次命令 -:代表连续的时间范围,比如"0 5 * * 1-6",代表在周一到周六的凌晨5点0分执行命令 */n:代表每隔多久执行一次,比如"*/10 * * * * ",代表每隔10分钟就执行一遍命令
时间执行案例
#应用实例 案例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中 */1 * * * * date >> /tmp/mydate 案例2:每隔1分钟,将当前日期和日历都追加到/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 案例3:每天凌晨2:00将mysql数据库testdb ,备份到文件中。 提示:指令为mysqldump -u root -p密码 数据库>home/db.bak 步骤①crontab -e 步骤② 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
①at命令是一次性定时计划任务,at 的守护进程atd会以后台模式检查作业队列来运行
②默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
③at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
④在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef l grep atd #可以检测atd是否在运行 #at命令格式 at [选项] [时间] 输出两次Ctrl+D结束at命令的输入
at指定时间的方法
(1)接受在当天的hh:mm(小时:分钟)式的时间指定。
假如该时间已过去,那么就放在第二天执行。例如:04:00
(2)使用midnight((深夜),noon (中午),teatime〈饮茶时间,一般是下午4点)等比较模糊的词语来指定时间
(3)采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm
(4)指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 03//01/2021
(5)使用相对计时法,指定格式为: now + count time-units,now就是当前时间,time-units 是时间单位,这里能够是minutes(分钟) 、hous(小时)、days (天)、weeks (星期)
count是时间的数量,几天,几小时。例如: now + 5 minutes
(6)直接使用 today(今天)、tomorrow(明天〉来指定完成命令的时间
atq #查看系统中没有执行的工作任务 atrm 编号 #删除已经设置的定时任务 #案例1:2天后的下午5点执行bin/ls /home <<root@HK9527 ~>># at 5pm + 2 days at> /bin/ls /home<EOT> job 3 at Mon Oct 25 17:00:00 2021 #案例2:明天17点钟,输出时间到/root/date.txtg内 <<root@HK9527 ~>># at 17:00 tomorrow at> date > /root/date.txt<EOT> job 4 at Sun Oct 24 17:00:00 2021 #案例3:2分钟后,输出时间到/root/date2.txt内 <<root@HK9527 ~>># at now + 2 minutes at> date > /root/date2.txt<EOT> job 5 at Sat Oct 23 22:34:00 2021 #案例4:2分钟后,执行/root/my.sh脚本 <<root@HK9527 ~>># at now + 2 minutes at> /root/my.sh<EOT> job 5 at Sat Oct 23 22:34:00 2021 前提是用户对my.sh具有执行权限
对Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得。
硬盘说明
1) Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI 硬盘
2)对于IDE硬盘,驱动器标识符为“hdx~",其中nd"表明分区所在设备的类型,这里是指IDE硬盘了。
"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
例:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3)对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
lsblk #查看所有设备挂载情况 lsblk -f #查看所有设备挂载情况详细信息
增加一块磁盘的步骤
①虚拟机添加硬盘
虚拟机设置---添加---磁盘
②分区
fdisk /dev/sdb #分区命令 开始对/sdb 分区 m:显示命令列表 p:显示磁盘分区同 fdisk- l n:新增分区 d:删除分区 w:写入并退出 #说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区,输入分区号(只是一个分区号,不是分区的数量,如果想要创建两个分区,那就输入两次n)
#然后两次回车默认剩余全部空间,最后输入w写入分区并退出,若不保存退出输入q
③格式化
mkfs -t ext4 /dev/sdb1 #格式化磁盘,其中ext4是分区类型
④挂载
#挂载:将一个分区与一个目录联系起来, mount 设备名称 挂载目录 例如: mount /dev/sdb1/ newdisk #取消挂载 umount 设备名称或者挂载目录 例如: umount /dev/sdb1 或者 umount /newdisk 注意:用命令行挂载,重启后会失效
⑤设置可以自动挂载
vim /etc/fstab #永久挂载:通过修改/etc/fstab实现挂载 添加完成后执行mount-a即刻生效,重启后挂载点不消失
注意:目录与磁盘挂载之后,往目录里写的东西是写到了磁盘里,重启之后挂在消失,之前的目录里是没有东西的,东西都在磁盘里。
挂载NTFS
1、Ntfs-3g安装 解压缩安装: tar zxf ntfs-3g_ntfsprogs-2011.4.12.tgz //编译和安装ntfs-3g源代码 cd ntfs-3g_ntfsprogs-2011.4.12 ./configure make make install 2、Mount NTFS分区 如果在安装过程中没有出现错误,NTFs卷可以mount到Linux上,并且具有读写权限。 mount -t ntfs-3g /dev/sdb1 /mnt/data
df -h #查询系统整体磁盘使用情况
目录磁盘情况查询
du -h #查询指定目录的磁盘占用情况,默认为当前目录 -s:指定目录占用大小汇总 -h:带计量单位 -a:含文件 --max-depth=1:子目录深度 -c:列出明细的同时,增加汇总值 应用实例 查询/opt目录的磁盘占用情况,深度为1 #du -hac --max-depth=1 /opt
磁盘统计指令
#统计 /opt 文件夹下文件的个数 ls -l /opt | grep "^-" | wc -l #统计 /opt 文件夹下目录的个数 ls -l /opt | grep "^d" | wc -l #统计 /opt 文件夹下文件的个数,包括子文件夹里的 ls -lR /opt | grep "^-" | wc -l #统计 /opt 文件夹下目录的个数,包括子文件夹里的 ls -lR /opt | grep "^d" | wc -l #以树状显示目录结构 tree目录,注意:如果没有tree ,则使用yum install tree安装 tree /home
查看ip地址的两种方式 1、ip addr 2、ifconfig
查看网络ip和网关
编辑---虚拟网络编辑器---更改设置,即可查看
配置网络信息
vim /etclsysconfig/network-scripts/ifcfg-ens33 ifcfg-ens33文件说明 DEVICE=eth0 #接口名(设备,网卡) HWADDR=00:0C:2X:6X:OX:XX #MAC地址 TYPE=Ethernet #网络类型(通常是Ethemet) UUID=926a57ba-92c6-423 1-bacb-f27e5e6a9f44#随机id ONBOOT-yes #系统启动的时候网络接口是否有效((yes/no) BOOTPROTO=static #IP的配置方法none、static、bootp、dhcp(引导时不使用协议、静态分配IP、BOOTP协议、DHCP协议) IPADDR=192.168.80.128 #IP地址 NETMASK=255.255.255.0 #子网掩码 GATEWAY=192.168.80.2 #网关 DNS1=114.114.114.114 #DNS解析地址
配置完成之后重启network服务
设置主机名
为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名
hostname #查看主机名 vim /etc/hostname #指定主机名
修改后,重启生效
设置hosts映射
设置hosts映射可以通过主机名找到(比如 ping)某个linux系统
#windows 在C:Windows\System32\drivers\etc\hosts文件指定即可 案例: 192.168.200.130 HK9527 #linux 在 /etc/hosts 文件指定 案例:vim /etc/hosts 添加 192.168.8.100 Thinkpad
Hosts是什么
一个文本文件,用来记录IP和Hostname(主机名)的映射关系
DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库
应用实例:用户在浏览器输入了www.baidu.com
①浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析;如果没有,就检查DNS解析缓存,如果有直接返回IP完成解析
这两个缓存,可以理解为本地解析器缓存
②一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录)
如在 cmd窗口中输入 ipconfig /displaydns #DNS域名解析缓存 ipconfig /flushdns #手动清理dns缓存
③如果本地解析器缓存没有找到对应映射,就回去检查系统中 hosts 文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回
④如果/本地DNS解析缓存和 hosts文件中均没有找到对应的IP,则到域名服务DNS进行解析
修改linux终端命令行样式,可以通过定义PS1环境变量实现
PS1是Linux终端用户的一个环境变量,用来定义命令行提示符的参数。
①在终端输入命令
[root@CentOS-7 ~]# echo $PS1 可以得到PS1当前值: [\u@\h \W]\$
PS1的常用参数以及含义
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称
\h :仅取主机名中的第一个名字
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称
\W :利用basename取得工作目录名称,只显示最后一个目录名
\# :下达的第几个命令
\$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $
所以linux默认的命令行提示信息的格式PS1= '[\u@\h \W]\$ ' 的意思就是:[当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名]#
②颜色设置参数
在PS1中设置字符颜色的格式为:\[\e[F;Bm\]........\[\e[0m\],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47,\[\e[0m\]作为颜色设定的结束。
颜色对照表:
F B
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
只需将对应数字套入设置格式中即可
比如要设置命令行的格式为绿字黑底(\[\e[32;40m\]),显示当前用户的账号名称(\u)、主机的第一个名字(\h)、当前工作目录最后一个名称(\W),可以直接在命令行键入如下命令:
③修改.bashrc文件,永久保存命令行样式
上面的设置的作用域只有当前终端的登陆有效,关闭终端或退出登录即刻失效
要想永久性的保存设置,需要修改.bashrc配置文件
cd vi .bashrc 加入这一行:PS1='\[\e[36;40m\]<<\u@\h \W>>\[\e[0m\]\$ ' 保存退出 source .bashrc #重新加载bash配置文件
在linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)
每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。
后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程
ps #用来查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何参数 ps-a #显示当前终端的所有进程信息 ps-u #以用户的格式显示进程信息 ps-x #显示后台进程运行的参数
USER:用户名称
PID:进程号
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
TTY:终端名称,缩写
STAT:进程状态,其中S=睡眠,s=表示该进程是会话的先导进程,N=表示进程拥有比普通优先级更低的优先级,R=正在运行,D=短期等待,Z=僵死进程,T=被跟踪或者被停止等
STARTED:进程的启动时间
TIME:CPU时间,即进程使用CPU的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
ps -ef #以全格式显示当前所有的进程 -e显示所有进程 -f全格式 案例:查看sshd 的父进程信息 ps -ef | grep sshd
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TME:CPU时间
CMD:启动进程所用的命令和参数
Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps -aux。两者没太大差别,是两种风格而已 System V风格和BSD 风格,ps -aux最初用到System V风格,而ps -ef被用在BSD风格中,两者输出略有不同
现在的大部分Linux系统都是可以同时使用这两种方式的
若是某个进程执行一半需要停止时,或是己消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
kill [选项] 进程号 #功能描述:通过进程号杀死/终止进程 killall 进程名称 #功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用 常用选项 -9:表示强迫进程立即停止 案例1:踢掉某个非法登录用户 ps -ef | grep sshd #查看非法登录用户进程ID kill 11196 #kill进程号 案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务 ps -ef | grep sshd #查看非法登录用户进程ID kill sshd对应的进程号 systemctl start sshd.service #重启sshd服务 案例3:终止多个gedit killall gedit 案例4:强制杀掉一个终端 ps -ef | grep bash #查看终端对应的进程ID kill -9 bash对应的进程号
基本语法 pstree [选项] #可以更加直观的来看进程信息 常用选项 -p:显示进程的PID -u:显示进程的所属用户 应用实例 案例1:请以树状的形式显示进程的pid pstreep -p 案例2:请以树状的形式进程的用户 pstree -u
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd防火墙等),因此我们又称为守护进程,是Linux 中非常重要的知识点。
service 服务名 [start | stop | restart | reload | status] #在CentOS7.0后很多服务不再使用service ,而是 systemctl service指令管理的服务在 /etc/init.d 查看
案例:使用service指令,查看,关闭,启动network
service network status
service network stop
service network start
查看全部服务名
setup
系统服务
上图中带 * 的为开机会自启动的,选中服务后点击空格可以变换状态,Tab键可以推出此界面
通过chkconfig命令可以给某个服务在各个运行级别设置自启动/关闭
chkconfig指令管理的服务在/etc/init.d查看
注意: Centos7.0后,很多服务使用systemctl管理
chkconfig的基本语法 chkconfig --list [| grep xxx] #查看服务 chkconfig 服务名 --list #查看此服务的开关状态 chkconfig--level 5 服务名 on/off #为此服务在运行级别上设置开关 案例演示 对network 服务﹐进行各种操作,把network在3运行级别关闭自启动 chkconfig --level 3 network off chkconfig --level 3 network on 使用细节 chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效
基本语法 systemctl [start | stop | restart | status] 服务名 systemctl指令管理的服务在 /usr/liblsystemd/system 查看 #ls -l /usr/lib/systemd/system
systemctl设置服务的自启动状态
systemctl list-unit-files [ l grep 服务名] #查看服务开机启动状态, grep可以进行过滤 systemctl enable 服务名 #设置服务开机启动 systemctl disable 服务名 #关闭服务开机启动 systemctl is-enabled 服务名 #查询某个服务是否是自启动的 #应用案例 查看当前防火墙的状况,关闭防火墙和重启防火墙 systemctl status firewalld systemctl stop firewalld systemctl start firewalld
如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable | disable ] 服务名
打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯
这时,需要打开指定的端口,比如80、22、8080等,需要用到firewall指令
打开端口:firewall-cmd --permanent --add-port=端口号/协议 关闭端口:firewall-cmd --permanent --remove-port=端口号/协议 重新载入,才能生效:firewall-cmd --reload 查询端口是否开放:firewall-cmd --query-port一端口/协议 应用案例: 1)启用防火墙,测试111端口是否能telnet #不行 2)开放111端口 #firewall-cmd --permanent --add-port=111/tcp #firewall-cmd --reload #需要重新载入才能生效 3)再次关闭111端口 firewall-cmd --permanent --remove-port=111/tcp firewall-cmd --reload #需要重新载入才能生效
top与ps命令很相似,它们都用来显示正在执行的进程。
top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程
#基本语法 top [选项] #常用选项 -d:秒数,指定top命令每隔几秒更新,默认是3秒 -i:使top不显示任何闲置或者僵死进程 -p:通过指定监控进程ID来仅仅监控某个进程的状态。 #交互操作 P:以CPU使用率排序,默认就是此项 M:以内存的使用率排序 N:以PID排序 q:退出top #P、M、N都是大写,q是小写
top - 09:42:47 #系统时间 up 9 min #运行时间 2 users #当前登录用户 load average: 0.00,0.01,0.02 #负载均衡,后面的三个数分别是1分钟、5分钟、15分钟的负载情况,load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。 #如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了 Tasks: 173 total #总进程:173 total 1 running #正在运行的进程数 172 sleeping #休眠的进程数 0 stopped #停止的进程数 0 zombie #僵尸进程数 Cpu(s): #Cpu状态信息 0.0 us #user space用户空间占用CPU的百分比 0.0 sy #sysctl内核空间占用CPU的百分比 0.0 ni #改变过优先级的进程占用CPU的百分比 100.0 id #idolt空闲CPU百分比 0.0 wa #wait等待占用CPU的百分比 0.0 hi #Hardware IRQ硬中断占用CPU的百分比 0.0 si #Software Interrupts软中断占用CPU的百分比 0.0 st #虚拟机被hypervisor偷去的CPU时间 KiB Mem : 4026376 total,3241300 free,353592 used,431484 buff/cache #内存状态 KiB Swap:2097148 total,2097148 free,0 used. 3391548 avail Mem #swap交换分区信息 used:使用中的内存总量,指的是现在系统内核控制的内存数 free:空闲的内存总量,是内核还未纳入其管控范围的数量。 这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器"危矣"。 Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。
纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存
内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used
如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。 PID:进程ID,进程的唯一标识符 USER:进程所有者的实际用户名 PR:进程的调度优先级,这个字段的一些值是'rt',这意味这这些进程运行在实时态 NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR:SHR是进程使用的共享内存,共享内存大小,单位kb S:这个是进程的状态。它有以下不同的值: D - 不可中断的睡眠态。 R – 运行态 S – 睡眠态 T – 被跟踪或已停止 Z – 僵尸态 %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比 %MEM:进程使用的可用物理内存百分比 TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒 COMMAND:运行进程所使用的命令,进程名称(命令名/命令行) #案例1:监视特定用户,比如我们监控tom用户 top:输入此命令,按回车键,查看执行的进程 u:然后输入"u"回车,再输入用户名,即可 #案例2:终止指定的进程,比如我们要结束tom登录 top:输入此命令,按回车键,查看执行的进程 k:然后输入"k"回车,再输入要结束的进程ID号 #案例3:指定系统状态更新的时间(每隔10秒自动更新),默认是3秒 top -d 10
可以看到哪些服务是处于监听状态,也可以看到有哪些连接到本机,要是发现有不知名的端口在监听,那就要小心木马等病毒危害
基本语法 netstat [选项] 选项说明 -an:按一定顺序排列输出 -p:显示哪个进程在调用 应用案例 请查看服务名为 sshd的服务的信息 netstat -anp | grep sshd
rpm包在光盘文件中的package目录中
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件
RPM是RedHat Package Manager (RedHat软件包管理工具〉的缩写,类似windows的 setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的
Linux的分发版本都有采用(suse,redhat, centos等等),可以算是公认的行业标准了
rpm-qa l grep xx #查询已安装的rpm列表 举例:看看当前系统,是否安装了firefox #rpm -qa | grep firefox
rpm包名: firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统: el7.centos.x86_64表示centos7.x的64位系统
如果是i686、i386表示32位系统,noarch表示32位,64位通用
rpm -qa #查询所安装的所有rpm软件包 rpm -qa | more rpm -qa | grep xxx rpm -q 软件包名 #查询软件包是否安装 rpm -q firefox rpm-qi 软件包名 #查询软件包信息 rpm -qi firefox rpm-ql 软件包名 #查询软件包中的文件 rpm -ql firefox rpm -qf 文件全路径名查询文件所属的软件包 rpm -qf /etc/passwd #查看passwd这个文件是那个程序所属 rpm -qf /etc/firefox rpm -qpi tree-1.5.3-3.el6.x86_64.rpm #确认该软件的作用 rpm -qpl tree-1.5.3-3.el6.x86_64.rpm ##确认该软件安装路径 #卸载rpm包 基本语法 rpm -e RPM包的名称 应用案例:删除firefox软件包 rpm -e firefox 细节讨论 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。 如:$ ypm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1 如果我们就是要删除foo这个rpm包,可以增加参数--nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行.
安装rpm包
安装rpm包 基本语法 rpm -ivh RPM包全路径名称 参数说明 i=install安装 v=verbose提示 h=hash进度条 应用实例 卸载和安装firefox浏览器 #rpm -e firefox #rpm -ivh firefox
Yum是一个 Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
yum的基本指令 yum list | grep xx #查询yum服务器的软件列表是否有需要安装的软件 安装指定的yum包 yum install xxx #下载安装 yum应用实例:请使用yum的方式来安装firefox rpm -e firefox yum list | grep firefox yum install firefox
更换yum源
①yum install wget -y #首先安装wget ②mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #将系统原始配置文件失效 ③wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#使用Wget获取centos6的阿里yum源配置文件 ③wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#使用Wget获centos7的阿里yum源配置文件 ④yum clean all #清空以前yum源的缓存 ⑤yum makecache #获取阿里云的缓存
centos8的yum源问题详解
原因:CentOS Linux 8操作系统版本在2022年12月31日结束了生命周期(EOL),Linux社区不再维护该操作系统版本。所有的CentOS Linux 8的yum源都无效!
解决办法:更换yum源
cd /etc/yum.repos.d/ mkdir repobackup mv *.repo repobackup/ #备份镜像源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
以上两个版本都可以,任选一个即可
yum clean all #清除旧的yum缓存 yum makecache #生成新的yum缓存
Linux里面一切皆文件,那我们可以知道文件状态的三个时间它们分别是 -atime、-ctime、-mtime
关于时间的信息有三个:
最近访问时间 access time (-atime)
最近更改时间 modify time (-mtime)
最近状态改动时间 change time(-ctime)
当然我们也看到了创建时间那一项为空白,也就是说Linux系统下是无法查看文件的创建时间的
atime : 它代表着最近一次访问文件的时间,显示一个文件的内容或者运行一个shell脚本会更新文件的atime。可用ls -lu命令查看
mtime : 它代表着最近一次文件内容被修改的时间。可用ls -l 命令查看
ctime : 它代表着最近一次文件状态改变的时间 ,是status change time,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。可用ls -lc 命令查看
我们既然可以查看当前的atime、mtime、ctime,那肯定也可以查看几天前或者几天之内被改过或者访问过的文件,Linux为我们提供了一个简便的查询方式,那就是 +n 和 -n
下面以 -mtime 举例说明:
-mtime n : n为数字,意思为在n天之前的“一天之内”被更改过内容的文件 -mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名 -mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名 找 “5天之内被更改过的档案名” 就是 find / -mtime -5 找 “5天前的那一天被更改过的档案名” 就是 find / -mtime 5 找 “5天之前被更改过的档案名” 就是 find / -mtime +5
下面用图来说明一下:
右边为当前时,+5 代表大于等于 6 天前的档案名, -5 代表小于等于 5 天内的档案名,5 则是代表 5-6 那一天的档案名。
二十一、Tips
1、CentOS8设置开机自动登录账户的方法
CentOS8图形界面不用输入用户名密码直接登录
vim /etc/gdm/custom.conf #在[daemon]配置节下添加如下内容 [daemon] AutomaticLoginEnable=True AutomaticLogin=root
2、Chrome浏览器开机默认全屏启动教程
① 下载安装chrome浏览器(建议默认安装)
② 右键打开chrome浏览器快键方式的属性
③ 在 目标 选项卡后面添加如下信息
--kiosk www.baidu.com #--kiosk前面有空格 #www.baidu.com为要打开的地址
④ 修改完成后,将此快捷方式拖动到程序启动项文件夹中,关机重启即可