第二部分
1. 远程登录,远程传输
1.1 远程登录
1.1.1 登录前提
需要Linux开启一个sshd的服务,监听22号端口,一般默认是开启的
1. 查看是否开启:
chkconfig --list | grep sshd
没有开启,则手动开启:
chkconfig --level 5 sshd on
reboot
1.1.2 Xshell连接配置
1. 查看虚拟机ip:
ifconfig
2. 配置Xshell:
3. 测试
1. 在/home目录下创建文件
cd /home
touch hello.py
2. 重启服务器
reboot
1.2 远程登录
1. 配置好一个xshell
2. 正确输入账号密码即可,当输入框呈现如下变化即可。
2. vi 和 vim 编辑器的使用
vi 和 vim 类似于windows的文本编辑器
所有的Linux系统都会内置vi文本编辑器
vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能,因此被广泛使用
如果Linux中没有vim这个命令,可以手动下载:
yum install vim
正常模式下,我们可以使用快捷键对文本进行操作,比如:复制--yy 粘贴:p
以vim打开文档,直接进入的就是一般模式,这个模式下,我们可以使用[上下左右]来移动光标.delet删除末尾字符,等等(具体的快捷键后面会说)
2.1.2 插入模式
在插入模式下,程序员可以输入内容
按下i,o,a,r,I,O,A,R中任意一个键,会进入插入模式.
正常习惯按i,因为好记,insert
2.1.3 命令行模式
这个模式下,程序员可以输入相关指令,来完成比如:存盘,离开,显示行号等功能(具体指令后面会说)
2.2 三种模式之间的转换
2.3
1.拷贝当前行,并粘贴
拷贝:yy 粘贴:p
2.拷贝当前行向下5行,并粘贴
拷贝5行:5yy
3.删除当前行
删除:dd
4.删除当前行向下5行
删除5行:5dd
5.光标移至最后一行
G
6.光标移至首行
gg
7.移动到第7行
7gg
8.撤销
u
2.4
1.查找某个关键字
/关键字
2.取消高亮
:nohl
3.显示行号
:set nu
4.取消行号
:set nonu
3. 关机,重启和用户切换注销
3.1
shutdown命令
shutdown -h now :立即关机
shutdown -h 2 :2分钟后关机
shutdown -r now :立即重启
shutdown -r 1 :1分钟后重启halt
关机
reboot
重启
sync:
把内存的数据同步到磁盘
3.2
3.2.1 基本说明:
正常在公司是不会给你root权限的,就算给你了root权限,也不要拿root用户直接登录,避免操作失误
3.2.2 切换用户
su - 用户名 切换用户
exit 回到原来用户
3.2.3 注销用户
前提:在图形界面这个级别无效
logout
4. 用户管理
1.Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
2.Linux 的用户需要至少要属于一个组
4.2 添加用户
4.2.1 基本语法
useradd [选项] 用户名
例子:
useradd lxx说明:
1.创建用户成功后会自动创建和用户名同名的家目录
指定家目录
useradd -d 目录路径 用户名 目录可以不存在
指定用户组useradd -g 用户组名 用户名 组一定得先创建好
4.3 给用户指定或修改密码
passwd 用户名
4.4 删除用户
4.4.1 基本语法
userdel 用户名 删除用户,保留家目录
userdel -r 用户名 删除用户,不保留家目录
4.4.2 说明
正常在我们删除用户的时候,一般会保留家目录
4.5 查询用户信息
4.5.1 基本语法
id 用户名
用户名不存在
4.6 切换用户
4.6.1 说明
当用户权限不够时,可以通过
su -
,来切换到高权限用户,比如root用户
4.6.2 基本语法
su - 用户名 切换用户
exit 返回原来用户
4.6.3 补充说明
4.7 用户组
4.7.1 说明
用以对具备同一权限的用户进行统一管理
就好比:运维组,技术组
8.7.2 增加组
groupadd 组名
4.8 修改用户的组
4.8.1 基本指令
这是用户的配置文件,记录着用户的各种信息
每行含义:用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell
4.10 /etc/shadow 文件
口令配置文件
存用户密码和相关时间的地方
4.11 /etc/group 文件
组的配置文件
5. 常用指令
5.1 指定运行级别
运行级别说明:
0:关机
2:多用户状态[无网络服务]
3:多用户状态[有网络服务]
4:保留级别
5:图形界面
6:系统重启
vim /etc/inittab
修改最后一行:
id:5:initdefault:
5.3 切换运行级别
init [012356]
5.4 找回root密码
如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。
思路: 进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。
开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑内核)在输入 e-> 在这行最后输入1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。
pwd 显示当前所在的目录
ls [选项] [目录或文件] 查看文件信息
ls -a 查看所有文件和目录,包括隐藏的
ls -l 以列表的方式显示
cd 路径
cd ~: 回到家目录
cd ..: 回到上一级目录
mkdir [选项] 路径 创建文件夹
mkdir -p 路径 创建多级文件夹
rmdir [选项] 路径 删除空文件夹
rmdir -p 路径 递归删除空文件夹文件夹下有内容,则无法删除
touch 文件路径
可以一次创建多个文件
touch 文件路径1 文件路径2
5.5.7 cp指令
拷贝文件到目标路径
cp [选项] 源路径 目标路径
cp 源路径 目标路径 拷贝单个文件
cp -r 源路径 目标路径 拷贝文件夹
当拷贝时发现相同文件,会提示[是否覆盖?]
\cp [选项] 源路径 目标路径 取消提示,强制复制
删除目录或者文件
rm [选项] 目标路径
rm 文件路径 删除文件
rm -r 文件夹路径 删除文件夹
rm -f xxxx 强制删除不提示
移动文件或重命名
显示文件内容
cat [选项] 文件路径
cat 文件路径 显示文件内容
cat -n 文件路径 显示文件内容,并显示行号
more指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容
more指令中内置了很多快捷键,用起来很方便
空格 向下翻一页
Enter 向下翻一行
q 立即离开
Ctrl+F 向下滚动一屏
Ctrl+B 向上滚动一屏
= 显示当前行号
:f 输出文件名和当前行号
比more更加强大,功能比more更过,这里只介绍部分
经常用来读大日志文件
空格 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
/字符串 向下查找[字符串],n下一个,N上一个
?字符串 向上查找[字符串],n下一个,N上一个
q 离开less
>:输出重定向 会覆盖原来文件内容
>>:追加重定向 追加到文件末尾
把内容输出到控制台
如下:
echo "我是杨家三少"
echo $PATH
head 文件路径 查看文件前10行
head -n 5 文件路径 查看文件前5行
tail 文件路径 查看文件前10行
tail -n 5 文件路径 查看文件前5行
tail -f 文件路径 实时追踪文件所有的更新-----经常使用
软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
ln -s 源文件或源文件夹 软连接名
查看已经执行过历史命令,也可以执行历史指令
history 查看所有的历史指令
history 10 查看最近执行的10条指令
!100 执行编号为100的指令
date 显示当前日期
data +%Y 显示当前年份
data +%m 显示当前月份
data +%d 显示当前天
data +%Y-%m-%d %H:%M:%S
查看日历
cal 显示当前日历
cal 2020 显示2020年的日历
find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于windows的查找选项:
-name 文件名 按文件名查找
-user 用户名 查找属于该用户的所有文件
-size 按文件大小查找
+20M
-20M
20M
20K
管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理
grep:过滤查找
grep [选项] 过滤内容
选项:
-n 显示匹配行及行号
-i 忽略字母大小写
用于压缩和解压文件
gzip 文件路径
gunzip gz文件路径
说明:使用gzip压缩文件之后,不会保留原来的文件
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
zip [选项] xxx.zip 被压缩内容 压缩文件或者目录
-r 压缩目录unzip [选项] xxx.zip 解压文件
-d 目录 指定压缩后的存放目录
压缩:
tar -zcvf xx.tar.gz 被压缩内容 压缩
tar -zxvf xx.tar.gz -C 目标路径 解压
6. 组管理与权限管理
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
ls -ahl
chown 用户名 文件名
groupadd 组名
当某个用户创建了一个当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
ls –ahl
chgrp 组名 文件名
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
usermod –g 组名 用户名
ls -l
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc0-9 位说明
第 0 位确定文件类型(d,-,l)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
第 7-9 位确定其他用户拥有该文件的权限
r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行
r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]
-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
chmod 权限变更格式 文件或目录路径
权限变更格式一:
u:所有者 g:所有组 o:其他人 a:所有人
1. u=rwx,g=rx,o=x
2. o+w 其它用户增加w权限
3. a-x 所有人减去执行权限
权限变更格式二:
r = 4 w = 2 x = 1 rwx = 7 rx = 5
chmod u=rwx,g=rx,o=x 可以写成 chmod 751
chown newowner file 改变文件所有者
chown -R newowner 文件夹 使得所有子文件或子目录生效
chgrp newgroup file 改变文件所有组
chgrp -R newgroup 文件夹 使得所有子文件或子目录生效
police,bandit
jack, jerry: 警 察
xh, xq: 土 匪1.创建组
2.创建用户
3.jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
4.jack 修改该文件,让其它组人可以读, 本组人可以读写
5.xh 投靠 警察,看看是否可以读写
6.使用 jack 给他的家目录 /home/jack 的所在组一个 rx 的权限
7.xh重新注销再到 jack 目录,操作 jack 的文件
6.14 练习
练习:
练习文件权限管理[课堂练习]1.建立两个组(神仙,妖怪)
2.建立四个用户(唐僧,悟空,八戒,沙僧)
3.设置密码
4.把悟空,八戒放入妖怪;唐僧,沙僧放入神仙
5.用悟空建立一个文件 (monkey.py 该文件要输出 i am monkey)
6.给八戒一个可以r,w的权限,唐僧,沙僧对该文件没有权限
7.八戒修改 monkey.py 加入一句话( i am pig)
8.把 沙僧 放入妖怪组
9.让沙僧修改monkey.py, 加入一句话 ("我是沙僧,我是妖怪!");
7. crond任务调度
crontab [选项]
-e : bianji crontab定时任务
-l : 查询crontab
-r : 删除当前用户所有的crontab任务
例子: 每分钟执行查看一次/ect目录,把目录内容写进/tml/a.txt下
具体实现步骤:
1.crontab –e
2.*/ 1 * * * * ls -l /etc >> /tmp/a.txt
3.保存退出
时间参数案例:
1.每天22点45分执行
45 22 * * *
2.每周一的17点执行
0 17 * * 1
3.每月1号的15号的凌晨5点执行
0 5 1,15 * *
4.每周一到周五的凌晨4点40份执行
40 4 * * 1-5
5.每天的凌晨4点,每隔10分钟执行一次命令
*/10 4 * * *
8.
mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区上
3.扩展分区要占一个主分区
4.mbr最大只支持2TB,但拥有最好的兼容性gpt分区:
1.支持无限多个主分区(但操作系统会限制,比如windows下最多支持128个主分区)
2.最大支持18EB的容量(1EB=1024PB)
3.windows7 64位后支持gpt模式
1.Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分
现在主要的硬盘都是scsi硬盘
linux中对scsi硬盘的标识为"sdx~"
如:
sda1:表示该磁盘的分区1
sda2:表示该磁盘的分区2
需求是给我们的 Linux 系统增加一个新的硬盘,并且挂载到/home/newdisk
步骤:
1.虚拟机添加硬盘
2.分区
fdisk /dev/sdb
m 选择帮助
n 增加分区
p 划主分区
1 主分区1
1 默认
w 写入分区信息并退出3.格式化
mkfs -t ext4 /dev/sdb14.挂载
mount /dev/sdb1 /home/newdisk
5.设置自动挂载
vim /etc/fstab
(内容如下)
mount -a 立即生效
[root@wangyong home]# lsblk
[root@wangyong home]# cd /dev
[root@wangyong dev]# ls -l
[root@wangyong dev]# fdisk /dev/sdbCommand (m for help): m
Command (m for help): n
Command (m for help): mCommand (m for help): w
[root@wangyong dev]# lsblk
mkfs -t ext4 /dev/sdb1mkfs -t ext4 /dev/sdb1
lsblk
ls -l
mkfs -t ext4 /dev/sdb1
lsblk
lsblk -f
mkdir /home/newdisk
mount /dev/sdb1 /home/newdisk
lsblk
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
mount -a
df -lh
du /目录
-h 带计量单位
-s 指令目录占用磁盘大小
-a 含文件
-c 列出明细,并显示汇总值
--max-depth=1 子目录深度
例子:
查询 /opt 目录的磁盘占用情况,深度为 1du -ach --max-depth=1 /opt
1.统计/home 文件夹下文件的个数
ls -l /home | grep '^-' | wc -l
2.统计/home 文件夹下目录的个数
ls -l /home | grep '^d' | wc -l
3.统计/home 文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep '^-' | wc -l
4.统计文件夹下目录的个数,包括子文件夹里的
ls -lR /home | grep '^d' | wc -l
9. 网络配置
网络配置 (ipconfig 指令)
1.使用命令查看
ipconfig
2.界面查看
ping 目标ip 测试当前服务器是否可以连接目的主机
测试当前服务器是否可以连接百度
ping www.baidu.com
此方式的缺点:
linux 启动后会自动获取 IP,缺点是每次自动获取的
直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改配置文件后,要重启网络服务才能生效
service network restart
1.在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号
2.每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
3.每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
4.一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束
BSD风格 详解
user 用户名称
pid 进程号
%cpu 进程占用cpu百分比
%%mem 进程占用物理内存的百分比
vsz 进程占用虚拟内存的大小
rss 进程占用物理内存的大小
tty 终端名称(后台则为?)
stat 进程状态
S:睡眠
s:会话的先导进程
N:进程拥有比普通优先级更低的优先级
R:正在运行
D:短期等待
Z:僵尸进程
T:被跟踪或者被停止
start 进程启动时间
time 使用cpu总时间
command 启动进程所用的命令和参数,如果过长会被截断显示
system V 风格详解
uid 用户id
pid 进程id
ppid 父进程id
C 进程占cpu百分比
stime 进程启动时间
tty 终端名称(后台则为?)
cmd 启动进程所用的命令和参数
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。
kill 进程号
-9 强迫进程立即停止
killall 进程名称
pstree [选项]
-p 查看进程pid
-u 查看进程所属用户
1.查看当前防火墙的状况,关闭防火墙和重启防火墙(iptables)
service这种方式关闭或者打开服务只是临时生效
重启后,还是回到以前对服务的设置
/etc/init.d 此文件夹下放着系统都有哪些服务
ls -l /etc/init.d
查看或者修改默认级别: vi /etc/inittab
Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
chkconfig 查看每个服务的配置
chkconfig 服务名 查看具体服务的配置
chkconfig --level 5 服务名 on/off 给服务设置是否自动启动
1.请显示当前系统所有服务的各个运行级别的运行状态
chkconfig
2.请查看 sshd 服务的运行状态
chkconfig | grep sshd
3.将 sshd 服务在运行级别 5 下设置为不自动启动,看看有什么效果?
chkconfig --level 5 sshd off
4.当运行级别为 5 时,关闭防火墙。
chkconfig --level 5 iptable off
5.在所有运行级别下,关闭防火墙
chkconfig iptable off
6.在所有运行级别下,开启防火墙
chkconfig iptable on
chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效
top [选项]
-d 指定每隔几秒更新,默认3秒
-i 不显示任何闲置或者僵尸进程
-p id号 监听指定进程
交互操作:
P 以cpu使用率排序,默认就这个
M 以内存使用率排序
N 以pid排序
u 监听具体用户
k 终止指定进程
q 退出top
1.监视特定用户
top
u mac
2.终止指定的进程
k
pid
3.指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒)
top -d 3
rpm –qa 查询已安装的 rpm 列表
firefox:名称
45.0.1-1:版本号
el6.centos.x86_64:centos6.X---64位
rpm -q 软件包名 查看是否已经安装
rpm -qi 软件包名 查看软件包信息
rpm -ql 软件包名 查看软件包中的文件安装位置
rpm -qf 文件(如:/etc/passwd) 查看某个文件属于哪个rpm包
例子:
rpm -e firefox包依赖问题:如果其它软件包依赖于你要卸载的软件包,卸载时则会产生错误信息
rpm -e --nodeps 包名 强制删除
rpm -ivh RPM 包全路径名称
i:install 安装
v:verbose 提示
h:hash 进度条例子:安装firefox
1.挂载centos的iso镜像文件
2.media下找到rpm
3.拷贝到opt下
4.安装
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
类似python中的pip
yum list|grep xx 查询yum服务器上是否有需要安装的包
yum install xxx 下载安装