具体的目录结构(不用背,知道即可)
1.拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴。[一般模式下]
2.删除当前行 dd,删除当前行向下的5行5dd[一般模式下]
3.在文件中查找某个单词[命令行下][/关键字 ,回车查找,输入n 就是查找下一个]
4.设置文件的行号,取消文件的行号。[命令行下][显示一般模式:set nu和不显示一般模式:set nonu]
5.编辑/etc/profile文件,使用快捷键到该文档的最末行[G]和最首行[gg]
6.在一个文件中输入"hello",然后又撤销这个动作[一般模式下] [u]
7.编辑 /etc/profile 文件,并将光标移动到 20行 shift+g [一般模式下]
sync
命令,把内存中的数据写到磁盘中;shutdown
/reboot
/halt
等命令均已经再关机前进行了sync
,但小心一点总是好的。shutdown -h now # 立刻进行关机
shutdown -1 now # 1mins后进行关机
shutdown -r now # 现在重启计算机
shutdown # 1mins后进行关机
halt # 关机,作用和上面一样
reboot # 现在重启计算机
sync # 将内存拿数据同步到磁盘
useradd -d
制定目录 新的用户名,给新创建的用户指定家目录useradd [-d [指定位置]] 新创建用户名
passwd 用户密码
删除用户时,一般会保留家目录。
userdel 用户名
userdel -r 用户名
id 用户名
su - 切换用户名
介绍:类似狱中角色,系统可以对有共性的多个角色进行统一管理
groupadd 组名
groupdel 组名
useradd -g 用户组 用户名
usermod -g 用户组 用户名
【掌握】用户信息配置文件(用户信息):/etc/passwd
【掌握】组配置文件(组信息):/etc/group
口令配置文件(密码和登录信息,是加密):/etc/shadow
init 级别
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,要修改默认的运行级别可改文件
/etc/inittab的id:5:initdefault:这一行中的数字
man [命令or配置文件]
pwd
ls
查看当前目录文件信息
ls [选项] [目录或是文件]
cd
切换到指定目录
cd ~ 和 cd 相同,都是切换到家目录
mkdir
用于创建目录
mkdir [选项] 要创建的目录
常用选项:-p 创建多级目录
rmdir
删除空目录
rmdir [选项] 要删除的空目录
目录是非空的无法删除
删除非空目录,需要使用rm -rf 要删除的目录
删除非空目录
touch
创建空文件,可以一次性创建多个文件
touch 文件名称1 [文件名称2] [文件名称3] ...
cp
拷贝文件到指定目录
cp [选项] 源文件目录 目标文件目录 # 若目标目录下存在的相同文件,则会提示是否确认覆盖,需要三次确认
常用选项:-r 递归复制整个文件夹
cp [选项] 源文件目录 目标文件目录 # 若目标文件目录不存在,会自动创建
\cp [选项] 源文件目录 目标文件目录 # 强制覆盖目标目录下的已存在的相同文件
rm
mv
移动文件与目录或重命名
mv 旧文件名 新文件名 # 重命名
mv 文件名 文件路径 # 移动文件
cat
查看文件内容,只能浏览不能修改,只读
cat [选项] 要查看的文件路径
常用选项-n
:显示行号
小技巧:与more结合使用,分页显示
cat [选项] 要查看的文件[路径] | more
more
一个基于VI编辑器的文本过滤器,他以全屏幕的方式按页显示文本文件的内容。
more指令内置了若干快捷键。
more 要查看的文件
操作 | 功能说明 |
---|---|
空格 | 代表向下翻【一页】 |
Enter | 代表向下翻【一行】 |
q | 代表立刻离开 more,不再显示该文件内容。 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
less
用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
less 要查看的文件[路径]
操作 | 功能说明 |
---|---|
空格 | 向下翻动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/字串 | 向下搜寻【字串】的功能;n:向下查找,N:向上查找 |
?字串 | 向上搜寻【字串】的功能;n:向上查找,N:向下查找 |
q | 离开less这个程序 |
>
>>
追加:不会覆盖文件原内容
ls -l > 文件 # 功能描述:列表的内容覆盖写入文件中(文件不存在则创建文件)
ls -al >> 文件 # 功能描述:列表的内容追加到文件中(文件不存在则创建文件)
cat 文件1 > 文件2 # 功能描述:将文件1的内容覆盖到文件2
echo "内容" > 文件 # 将内容直接写入文件
echo
输出内容到控制台
echo [选项] [输出内容]
echo $PATH # 输出当前环境变量路径
head
用于显示文件的开头部分内容,默认显示前10行内容
head 文件 # 显示文件前10行内容
head -5[-n 5] 文件 # 显示文件前5行内容
tail
用于显示文件的尾部内容,默认显示后10行内容
tail 文件 # 显示文件后10行内容
tail -5[-n 5] 文件 # 显示文件后5行内容
tail -f 文件 # 实时追踪该文档的所用更新
ln(这个是LN,不是IN)
软连接也叫符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径
ln -s [源文件或目录] [软连接名] # 给源文件创建一个软连接,类似于创建一个快捷方式
rm -rf [软连接名] # 删除软连接
删除软连接的时候软连接名称不要带/
,举例:
rm -rf SOFTLINK/ # 错误
rm -rf SOFTLINK # 正确
history
查看已经执行过的历史命令,也可以执行历史指令
history 数字 # 显示[数字]个指令
history !数字 # 显示历史编号为[数字]的指令
date
显示当前时间
date +[时间格式字符串] # 显示当前时间,格式为时间格式字符串
例子:date "+%Y-%m-%d %H:%M%S"
设置日期
date -s "2022-11-01 12:45:45" # 将系统时间设置为2022-11-01 12:45:45
cal
查看日历
cal [选项] # 选项为年份,即显示某一年的整年日历
find
find [搜索范围] [选项]
常用指令
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
查找文件大小大于20兆的文件
find / -size +20M # +n 文件大小大于n;-n 文件大小小于n;n 文件大小等于n
查找/
目录下,所有带有.txt
的文件
find / -name *.txt # 支持通配符
locate
可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
特别说明:
updatedb
locate hello.txt
grep 和 管道符号|
过滤查找,管道符,将前一个命令的处理结果输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
常用选项
选项 | 功能 |
---|---|
-n | 显示行号 |
-i | 忽略字母大小写 |
gzip/gunzip
gzip:压缩文件
文件压缩后,不会保留原文件
gzip 文件名 # 会自动将文件后缀添加为.gz
gunzip:解压文件
gunzip 文件.gz
zip/unzip
zip:压缩文件
zip [选项] xxx.zip 将要压缩的内容(路径)
常用选项:-r 递归压缩,即压缩目录
unzip:解压文件
unzip [选项] xxx.zip
常用选项:-d 目录
:制定解压后文件的存放目录
tar
打包指令:打包目录,压缩后的文件格式:.tar.gz
tar [选项] XXX.tar.gz 打包的内容
选项说明
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
将多个文件打包压缩
tar -zcvf test.tar.gz test1.txt test2.txt ...
将某个目录下的文件压缩
tar -zcvf test.tar.gz /home/
将 test.tar.gz 解压到当前目录
tar -zcvf test.tar.gz
将 test.tar.gz 解压到 /home/temp
目录下,若目录不存在,不会自动创建,会报错
tar -zcvf test.tar.gz -c /home/temp
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
ls -ahl
文件所有者,并不一定在文件所在组
chown 用户名 文件名
groupadd 组名
chgrp 组名 文件名
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登陆的初始目录
ls -l
中显示的内容如下
-rwxrw-r-- 1 root root 1212 Feb 2 09:39 abc
[r]代表可读(read):可以读取,查看。
[w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
[x]代表可执行(execute):可以被执行。
修改文件or目录权限
chmod
字母含义:
chmod u=rwx,g=rx,o=x # 文件目录名
chmod o+w # 文件目录名
chmod a-x # 文件目录名
r=4,w=2,x=1
rwx=4+2+1=7
相当于
chmod 751
chown newowner file # 改变文件的所有者
chown newowner:newgroup file # 改变用户的所有者和所有组
案例演示:请将/home/kkk
目录下所有的文件和目录的所有者都改成tom
提示:应该使用root用户操作
chown -R tom kkk/
chgrp newgroup file # 改变文件的所有组
police组
bandit组
创建组:
groupadd police
groupadd bandit
创建用户
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
指定密码
passwd jack # 123
passwd jerry # 123
passwd xh # 123
passwd xq # 123
jack创建一个文件,自己可以读写,本组人可以读,其他组没任何权限
chmod 640 jack01.txt
jack修改该文件,让其他组人可以读,本组人可以读写
chmod o=r,g=rw jack01.txt
xh投靠警察,看看是否可以读写
usermod -g police # root用户修改
id xh # xh没有权限
chmod g=rx /jack # 修改jack目录同组权限
xh在修改权限过后需要重新登陆才可以
Linux 硬盘分 IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
对于IDE硬盘,驱动器标识符为“hdx-”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
对于SCSI硬盘则标识为“sdx-”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
使用lsblk
指令查看当前系统的分区情况:
lsblk
lsblk -f
需求:给我们的Linux系统增加一个新的硬盘,并挂载到/home/newdisk
步骤一:
步骤二:
查看分区:lsblk
分区命令 fdisk /dev/sdb
开始对/sdb
分区
m
显示命令列表p
显示磁盘分区同fdisk -|
n
新增分区d
删除分区w
写入并退出说明:开始分区后输入n
,新增分区,然后选择p
,分区类型为主分区
。两次回车默认剩余全部空间。最后输入w
写入分区并退出,若不保存退出输入q
。
格式化磁盘:
分区命令:mkfs -t ext4 /dev/sdb1
其中ext4
是分区类型
挂载:
mount 设备名称 挂载目录
例如:
mount /dev/sdb1 /newdisk
卸载
umount 设备名称or挂载目录
umount /dev/sdb1
umount /newdisk
永久挂载
通过修改文件etc/fstab
实现
vim etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
查询系统整体磁盘使用情况
df -h
查询指定目录的磁盘占用情况
du -h /目录 # 默认为当前目录
选项 | 含义 |
---|---|
-s | 指定目录占用大小汇总 |
-h | 带计量单位 |
-a | 含文件 |
–max-depth=1 | 子目录深度 |
-c | 列出明细的同时,增加汇总值 |
应用实例
统计/home文件夹下文件的个数
ls -l /home | grep "^-" | wc -l # wc 统计个数
统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
统计/home文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^-" | wc -l # -R 递归统计
统计/home文件夹下目录的个数,包括子文件夹里的
ls -lR /home | grep "^d" | wc -l
以树状显示目录结构
tree
没有tree
,使用yum
安装
yum tree
ipconfig
查看vim /etc/sysconfig/network-scripts/ifcfg-ens33
service network restart
(重启机器reboot
也可以)查看进程使用的指令:ps
,一般来说使用的参数是ps -aux
ps指令详解
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消耗CPU时间 |
%CPU | 正在执行的命或进程名 |
%MEM | 占用内存情况 |
VSZ | 使用的虚拟内存大小(单位:KB) |
RSS | 使用的物理内存大小(单位:KB) |
STAT | 进程的状态:S->休眠;R->运行;Z->僵死进程 |
COMMAND | 进程执行时的命令行,过长会被截断 |
USER | 用户名 |
STARTED | 进程的启动时间 |
[PPID] | 父进程识别号 |
ps -a
:显示当前终端的所有进程信息
ps -u
:以用户的格式显示进程信息
ps -x
:显示后台进程运行的参数
ps -ef | more # 查看父进程,以全格式显示当前所有的进程
kill [选项] 进程号 # 通过进程号杀死进程
killall 进程名称 # 通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
应用实例
终止非法用户
ps -aux | grep sshd # sshd 查看远程登陆的用户
kill 进程号
终止远程登陆服务sshd,在适当时候再次启动sshd
ps -aux | grep sshd # sshd 查看远程登陆的用户
kill [sshd进程的进程号]
service start sshd # 重启sshd
终止多个gedit编辑器
killall gedit # gedit是进程名
强制终止进程
终端对应的文件名是/bin/bash
kill -9 [进程号]
pstree -p # 树状形式显示进程PID
pstree -u # 树状形式显示进程的所属用户ID
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。【原理图】
systemctl [start|stop|restart|reload|status] 服务名
使用案例:
关闭防火墙:
systemctl [start|stop|restart|reload|status] firewalld
注:这种方式是临时生效,重启后,回到原来的设置;
如果希望永久关闭,or自启动,需要使用chkconfig
指令
/etc/init.d
文件介绍:通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法:
查看服务:
chkconfig --list | grep xxx
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off # 请将sshd服务在运行级别为5的情况下,不要自启动
top
与ps
命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。
top [选项]
选项说明 :
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令。 |
-i | 使top不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
交互操作:
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的促用率排序 |
N | 以PID排序 |
U | 监控某个指定用户 |
q | 退出top |
netstat [选项]
netstat -anp # 查看所有网络服务
netstat -anp | grep sshd # 查看名为sshd的网络服务
rpm -qa | grep xx # 查询已安装xx软件的rpm列表
-qa
:查询所安装的所有rpm软件包-q 软件包名
:查询软件包是否安装-qi 软件包名
:查询软件包信息-ql 软件包名
:查询软件包中的文件-qf 文件全路径名
:查询文件所属的软件包rpm -e xxx # 卸载名为xxx的软件包
rmp -e --nodeps xxx # 强制删除名为xxx的软件包
rmp -ivh [RPM包全路径名称]
Yum 是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
使用yum的前提是可以联网。
默认是安装最新的版本。
yum list | grep xxx # 查询yum服务器是否有需要安装的xx软件
yum install xxx # 安装指定xxx软件的yum包