Linux基础命令(中)
开机/重启/用户切换/注销
7.1 关机/重启命令
shutdown命令
shutdown -h now :立即关机
shutdown -h 2 :1分钟后关机
shutdown -r now :立即重启
shutdown -r 1 :1分钟后重启
halt
关机
reboot
重启
sync:
把内存的数据同步到磁盘
特别注意:当关机或重启前,都应当先执行一下sync指令,把内存的数据写入磁盘,防止数据丢失
7.2 用户切换/注销
7.2.1 基本说明:
正常在公司是不会给你root权限的,就算给你了root权限,也不要拿root用户直接登录,避免操作失误
正常情况都是使用普通用户登录,然后主要管理员权限的时候再切换
7.2.2 切换用户
su - 用户名 切换用户
exit 回到原来用户
注销用户
前提:图形界面无效
logout
八 用户管理
8.1 知识储备
1.Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
2.Linux 的用户需要至少要属于一个组
8.2 添加用户
8.2.1 基本语法
useradd [选项] 用户名
例子:
useradd lxx
说明:
1.创建用户成功后会自动创建和用户名同名的家目录
指定家目录
useradd -d 目录路径 用户名
指定用户组
useradd -g 用户组名 用户名
8.3 给用户指定或修改密码
8.3.1 基本语法
passwd 用户名
8.4 删除用户
8.4.1 基本语法
userdel 用户名 删除用户,保留家目录
userdel -r 用户名 删除用户,不保留家目录
8.4.2 说明
正常在我们删除用户的时候,一般会保留家目录
8.5 查询用户信息
8.5.1 基本语法
id 用户名
8.6 切换用户
8.6.1 说明
当用户权限不够时,可以通过su -
,来切换到高权限用户,比如root用户
8.6.2 基本语法
su - 用户名 切换用户
exit 返回原来用户
8.6.3 补充说明
从高权限用户切换到低权限用户时,不需要密码
小练习:
1.创建一个lxx的用户并指定密码
2.切换到lxx
3.尝试cd到/root目录
4.切换回root用户
5.再次cd到/root目录
8.7 用户组
8.7.1 说明
用以对具备同一权限的用户进行统一管理
就好比:运维组,技术组
8.7.2 增加组
groupadd 组名
8.7.3 删除组
groupdel 组名
前提:组内不能有用户,否则无法删除
8.8 修改用户的组
8.8.1 基本指令
usermod -g 组名 用户名
8.9 /etc/passwd 文件
这是用户的配置文件,记录着用户的各种信息
每行含义:用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell
8.10 /etc/shadow 文件
口令配置文件
存用户密码和相关时间的地方
8.11 /etc/group 文件
组的配置文件
九. 实用指令
9.1 指定运行级别
运行级别说明:
0:关机
1:单用户[找回丢失密码]
2:多用户状态[无网络服务]
3:多用户状态[有网络服务]
4:保留级别
5:图形界面
6:系统重启
9.2 修改默认运行级别
vim /etc/inittab
修改最后一行:
id:5:initdefault:
9.3 切换运行级别
9.3.1 基本指令
init [012356]
测试:
1.从图形化切到级别3
2.再切回图形化
3.切换到关机级别
9.3.2 面试题
如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。
思路: 进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。
动手:
开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑内核)在输入 e-> 在这行最后输入1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。
这时,我们就进入到单用户模式,使用 passwd 指令来修改 root 密码。
练习:
1.假设我们的 root 密码忘记了,请问如何找回密码
2.请设置我们的 运行级别,linux 运行后,直接进入到 命令行界面,即进入到 3 运行级别
9.4 帮助指令
man 指令及配置文件
help shell内置指令
百度
9.5 文件目录指令
9.5.1 pwd指令
pwd 显示当前所在的目录
9.5.2 ls指令
ls [选项] [目录或文件] 查看文件信息
ls -a 查看所有文件和目录,包括隐藏的
ls -l 以列表的方式显示
9.5.3 cd指令
cd 路径
cd ~: 回到家目录
cd ..: 回到上一级目录
练习:
1.使用绝对路径,切换到root目录
2.使用相对路径,切换到root目录,比如当前在/usr/lib
3.回到上一级目录
4.回到家目录
9.5.4 mkdir指令
mkdir [选项] 路径 创建文件夹
mkdir -p 路径 创建多级文件夹
9.5.5 rmdir指令
rmdir [选项] 路径 删除空文件夹
rmdir -r 路径 递归删除空文件夹
文件夹下有内容,则无法删除
9.5.6 touch 指令
touch 文件路径
可以一次创建多个文件
touch 文件路径1 文件路径2
9.5.7 cp指令
拷贝文件到目标路径
9.5.7.1 基本语法
cp [选项] 源路径 目标路径
cp 源路径 目标路径 拷贝单个文件
cp -r 源路径 目标路径 拷贝文件夹
小练习:
1./home下创建test1文件夹
2.test1文件夹中创建a.txt,b.txt,c.txt三个文件
3.把test1中的a.txt复制到/home下
4.新建一个文件夹test2
5.拷贝整个test1到test2下
9.5.7.1 补充
当拷贝时发现相同文件,会提示[是否覆盖?]
\cp [选项] 源路径 目标路径 取消提示,强制复制
9.5.8 rm指令
删除目录或者文件
9.5.8.1基本语法
rm [选项] 目标路径
rm 文件路径 删除文件
rm -r 文件夹路径 删除文件夹
rm -f xxxx 强制删除不提示
小练习:
1.删除test1中的a.txt文件
2.删除test2整个文件夹
9.5.9 mv指令
移动文件或重命名
9.5.9.1 基本语法
mv 源路径 目标路径
小练习:
1.修改test1中的a.txt 为 d.txt
2.把test1中的c.txt 移动 到/home下
9.5.10 cat指令
显示文件内容
9.5.10.1 基本语法
cat [选项] 文件路径
cat 文件路径 显示文件内容
cat -n 文件路径 显示文件内容,并显示行号
小练习:
1.用cat显示/etc/profile 的内容,并显示行号
9.5.10.2 补充说明
正常情况为了方便阅读,我们会在cat指令最后加上管道符"
|",把内容传给more,分页显示
如:
cat -n /etc/profile | more
9.5.11 more指令
more指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容
more指令中内置了很多快捷键,用起来很方便
9.5.11.1 基本语法
more 文件路径
9.5.11.2 快捷键
空格 向下翻一页
Enter 向下翻一行
q 立即离开
Ctrl+F 向下滚动一屏
Ctrl+B 向上滚动一屏
= 显示当前行号
:f 输出文件名和当前行号
9.5.12 less指令
比more更加强大,功能比more更过,这里只介绍部分
9.5.12.1 基本语法
less 文件路径
9.5.12.2 快捷键
空格 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
/字符串 向下查找[字符串],n下一个,N上一个
?字符串 向上查找[字符串],n下一个,N上一个
q 离开less
9.5.13 >指令/>>指令
9.5.13.1 基本说明
把前方语句的结果存进文件,若文件不存在会自动创建
>:输出重定向 会覆盖原来文件内容
>>:追加重定向 追加到文件末尾
9.5.13.2 示例
1.a.txt里写上任意内容
2.把ll 查找的结果,用输出重定向写进a.txt
3.b.txt里写上任意内容
4.把ll 查找的结果,用追加重定向写进b.txt
小练习:
1.把/etc/profile 的内容 写进 /home/c.txt中
9.5.14 echo指令
把内容输出到控制台
如下:
echo "我是杨家三少"
echo $PATH
小练习:
1.用echo输出'hello world'
9.5.15 head指令
head
用于显示文件的开头部分内容,默认情况下
head 指令显示文件的前
10 行内容
9.5.15.1 基本语法
head 文件路径 查看文件前10行
head -n 5 文件路径 查看文件前5行
小练习:
1.查看/etc/profile 的前5行内容
9.5.15 tail指令
tail
用于显示文件的结尾部分内容,默认情况下tail指令显示文件的后10行内容
9.5.15.1 基本语法
tail 文件路径 查看文件前10行
tail -n 5 文件路径 查看文件前5行
tail -f 文件路径 实时追踪文件所有的更新-----经常使用
小练习:
1.查看/etc/profile 的后5行内容
2.实时追踪/home/myinfo.txt,在虚拟机上更新myinfo.txt,看xshell的效果
9.5.16 ln指令
软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
ln -s 源文件或源文件夹 软连接名
测试:
1. 在/home目录下创建/root的软链接,名字为linktoroot
2. cd 到软链接,然后pwd,查看当前路径
3. 创建一个a.txt的文件
4. cd 到 /root目录,查看是否有变化
5. 删除/home下的linktoroot
软连接解释
你可以把软连接理解为一个文件的快捷方式,硬链接,就相当于是文件。
文件是什么?是操作系统提供给用户的用来管理磁盘的虚拟单位,软连接就是这个文件的快捷方式,硬链接就是用来防止误删文件用的,用的比较少。
软连接的应用场景:项目上线
项目迭代,回滚,都要在uwsgi里面改配置,就会很麻烦,所以就指向一个软连接,比如名字就叫xxx,xxx然后在指向一个版本的项目。如果版本要变,删掉这个软连接,再建一个新的叫做xxx的软连接指向新的版本的项目,就可以了。
9.5.17 history指令
查看已经执行过历史命令,也可以执行历史指令
history 查看所有的历史指令
history 10 查看最近执行的10条指令
!100 执行编号为100的指令
所以,在公司,指令不要瞎逼乱输
9.6 时间日期类
9.6.1 date 指令
9.6.1.1 基本语法
date 显示当前日期
data +%Y 显示当前年份
data +%m 显示当前月份
data +%d 显示当前天
data +%Y-%m-%d %H:%M:%S
小练习:
1.显示当前时间信息
2.显示当前时间年月日
3.显示当前时间年月日时分秒
9.6.2 cal指令
查看日历
cal 显示当前日历
cal 2020 显示2020年的日历
9.6.3 find指令
find
指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于windows的查找
选项:
-name 文件名 按文件名查找
-user 用户名 查找属于该用户的所有文件
-size 按文件大小查找
+20M
-20M
20M
20K
小练习:
1.根据名称查找/home 目录下的 a.txt 文件
2.查找/opt 目录下,用户名称为 lxx 的文件
3.查找整个 linux 系统下大于 20M 的文件
4.查询/ 目录下,所有.txt 的文件
9.6.4 grep 指令 和 管道符号 |
管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理
grep:过滤查找
grep [选项] 过滤内容
选项:
-n 显示匹配行及行号
-i 忽略字母大小写
例子:
1.创建文件,写上多行,包含'yes'和'YES'
2.查找'yes'所在行,并显示行号
3.忽略大小写,查找'yes'所在行
9.7 压缩和解压类
9.7.1 gzip/gunzip 指令
用于压缩和解压文件
gzip 文件路径
gunzip gz文件路径
说明:使用gzip压缩文件之后,不会保留原来的文件
例子:
1.将 /home 下的 1.txt 文件使用gzip压缩
2.将 /home 下的 1.txt.gz 文件使用gunzip解压
9.7.2 zip/unzip 指令
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
zip [选项] xxx.zip 被压缩内容 压缩文件或者目录
-r 压缩目录
unzip [选项] xxx.zip 解压文件
-d 目录 指定压缩后的存放目录
例子:
1.将 /home 下的 所有文件进行压缩成 mypackage.zip
2.讲mypackge.zip解压到/opt/tmp下
9.7.3 tar指令
tar 指令 是打包指令,最后打包后的文件是
.tar.gz
的文件
压缩:
tar -zcvf xx.tar.gz 被压缩内容 压缩
tar -zxvf xx.tar.gz -C 目标路径 解压
z:使用gzip格式压缩
c:创建压缩包
x:解压
f:显示压缩解压过程
例子:
1.压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
2.将/home 的文件夹 压缩成 myhome.tar.gz
3.将 a.tar.gz 解压到当前目录
4.将 myhome.tar.gz 解压到 /opt/ 目录下
十 组管理和权限管理
10.1 Linux组基本介绍
在 linux 中的每个用户必须属于一个组,不能独立于组外。在
linux 中每个文件有所有者、所在组、其它组的概念
10.2 文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
10.2.1 查看文件的所有者
ls -ahl
例子:
1.创建一个组 police
2.再创建一个用户 tom
3.然后使用 tom 来创建一个文件 ok.txt,看看情况如何
10.2.2 修改文件所有者
chown 用户名 文件名
例子:
1.使用 root 创建一个文件 apple.txt
2.然后将其所有者修改成 tom
3.查看文件所有者
10.3 组的创建
groupadd 组名
例子:
1.创建一个组,monster
2.创建一个用户fox,并放到monster组中
10.4 文件/目录 所在组
当某个用户创建了一个当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
10.4.1 查看文件/目录 所在组
ls –ahl
10.4.2 修改文件所在组
chgrp 组名 文件名
例子:
1.使用 root 用户创建文件 orange.txt
2.查看当前这个文件属于哪个组
3.将这个文件所在组,修改到 police 组
10.5 其他组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
10.6 改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用
root 的管理权限可以改变某个用户所在的组
10.6.1 改变用户所在组
usermod –g 组名 用户名
10.7 权限基本介绍
ls -l
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
第 0 位确定文件类型(d,-,l)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
第 7-9 位确定其他用户拥有该文件的权限
10.8 rwx权限详解
10.8.1 rwx作用到文件
r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行
10.8.2 rwx作用到目录
r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]
10.9 文件及目录权限实际案例
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
- 表示类型为文件
第一组rwx: 表示所有者 可读 可写 可执行
第二组rw-: 表示同组用户 可读 可写 但不能执行
第三组r--: 表示其他用户 只可读
可用数字表示:
r = 4
w = 2
x = 1
因此rwx = 4+2+1 = 7
10.10 修改权限
chmod 权限变更格式 文件或目录路径
权限变更格式一:
u:所有者 g:所有组 o:其他人 a:所有人
1. u=rwx,g=rx,o=x
2. o+w 其它用户增加w权限
3. a-x 所有人减去执行权限
例子:
1.给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
2.给 abc 文件的所有者除去执行的权限,增加组写的权限
3.给 abc 文件的所有用户添加读的权限
权限变更格式二:
r = 4 w = 2 x = 1 rwx = 7 rx = 5
chmod u=rwx,g=rx,o=x 可以写成 chmod 751
例子:
1.将 /home/abc 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现
10.11 修改文件所有者
chown newowner file 改变文件所有者
chown -R newowner 文件夹 使得所有子文件或子目录生效
例子:
1.请将 /home/abc 文件的所有者修改成 tom
2.请将 /home/xxx 目录下所有的文件和目录的所有者都修改成 tom
10.12 修改文件所在组
chgrp newgroup file 改变文件所有组
chgrp -R newgroup 文件夹 使得所有子文件或子目录生效
例子:
1.请将 /home/abc 文件的所在组修改成 bandit (土匪)
2.请将 /home/xxx 目录下所有的文件和目录的所在组都修改成 bandit(土匪)
10.13 小案例-警察和土匪游戏
police,bandit
jack, jerry: 警 察
xh, xq: 土 匪
1.创建组
2.创建用户
3.jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
4.jack 修改该文件,让其它组人可以读, 本组人可以读写
5.xh 投靠 警察,看看是否可以读写
6.使用 jack 给他的家目录 /home/jack 的所在组一个 rx 的权限
7.xh重新注销再到 jack 目录,操作 jack 的文件
练习:
练习文件权限管理[课堂练习]
1.建立两个组(神仙,妖怪)
2.建立四个用户(唐僧,悟空,八戒,沙僧)
3.设置密码
4.把悟空,八戒放入妖怪;唐僧,沙僧放入神仙
5.用悟空建立一个文件 (monkey.py 该文件要输出 i am monkey)
6.给八戒一个可以r,w的权限,唐僧,沙僧对该文件没有权限
7.八戒修改 monkey.py 加入一句话( i am pig)
8.把 沙僧 放入妖怪组
9.让沙僧修改monkey.py, 加入一句话 ("我是沙僧,我是妖怪!");
十一 crond任务调度
10.1示意图
10.2 基本语法
crontab [选项]
-e : bianji crontab定时任务
-l : 查询crontab
-r : 删除当前用户所有的crontab任务
例子:
每分钟执行查看一次/ect目录,把目录内容写进/tml/a.txt下
具体实现步骤:
1.crontab –e
2.*/ 1 * * * * ls -l /etc >> /tmp/a.txt
3.保存退出
10.3 参数细节说明
时间参数案例:
1.每天22点45分执行
2.每周一的17点执行
3.每月1号的15号的凌晨5点执行
4.每周一到周五的凌晨4点40份执行
5.每天的凌晨4点,每隔10分钟执行一次命令
10.4 案例
1.每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
2.每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中