(CN) Linux Notes
Lesson 1
一 课程大纲
二 使用场景
服务器用Linux:免费、稳定、高效
三 Linux和Unix
-
贝尔实验室,多用户分时操作系统
-
B语言改写为C语言
四 虚拟机中分区管理
- / 根分区 /boot swap
- swap分区是用来弥补内存不够的
五 网络连接的三种方式
- 桥接模式:
- 在同一网段 e.g. 192.168.0.xx
- 虚拟系统可以和外部系统联系,但是会造成IP地址冲突
- NAT模式:(网络地址转换)
- 虚拟系统可以和外部通信,但是不是一个网段的IP
- 主机模式:(独立系统)
六 Linux目录结构
Linux中,一切皆文件
/bin
这个目录存放着常用的指令/sbin
存放着系统管理员使用的系统管理程序/home
存放着普通用户的主目录/root
系统管理员的主目录/lib
系统需要的动态链接库/lost+found
非法关机后存放的文件地/etc
配置文件和子目录 e.g. 数据库my.conf/usr
应用程序存放的地方,相当于Win中的Program Files目录/boot
Linux中启动所需的核心文件/tmp
临时文件存放处/dev
类似于windows的设备管理器,所有硬件用文件的形式储存/media
识别设备,进行管理/mnt
外部存储挂载在系统中/opt
主机额外安装软件所存放的目录,类似于安装包的地方/usr/local
软件安装好了的地方/var
存放不断扩充的东西,例如:log日志
七 远程登录
-
xshell
连接服务器 -
xftp
传输文件
Lesson 2
一 vi与vim
vi
是Linux下的文本编辑器;vim
是vi的增强版- 进入vim编辑器后,按
i
来进入编辑模式 - 输入
esc
退出编辑模式,再输入:
进入命令行模式 wq
保存并退出;q
退出;q!
强制退出
-
快捷键
一般模式:
yy
拷贝当前行5yy
向下五行,并黏贴(键入p)dd
删除当前行5dd
删除向下五行G
去到行末gg
去到行首u
撤销20 shift g
光标移动到20行
命令行:
/关键词
查找 输入n 查找下一个:set nu
、:set nonu
设置(取消)文件行号
二 关机和重启
三 用户登录和注销
su - root
进入管理员模式logout
注销用户
四 用户管理
pwd
显示当前所在的目录
-
添加用户 :
useradd 用户名
创建一个/home/用户名
的目录useradd -d 指定目录
自定义目录下创建新用户 -
指定/修改密码:
passwd 用户名
-
删除用户:
userdel 用户名
不删除家目录userdel -r 用户名
删除用户和家目录 -
查询用户信息:
id 用户名
-
切换用户:
su - 用户名
-
查看当前用户:
who am i
显示第一次登录时用户的信息 -
用户组:方便权限管理
新增组:groupadd xxxx
删除组:groupdel xxxx
加入用户时,若没有指定组,则会默认把用户加入以其名字命名的组
增加用户时直接加上组:1. group xxxx
2. useradd -g 用户组 用户名
修改用户的组:usermod -g 用户组 用户名
Lesson 3
一 运行级别
systemctl xxx
是设置开机时的
init 4
只是设置一次
二 找回root密码
-
首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面。如图:
-
进入编辑界面,使用键盘上的上下键把光标往下移动,找到以“Linux16”开头内容所在的行数”,在行的最后面输入:
init=/bin/sh
。如图: -
接着,输入完成后,直接按快捷键:
Ctrl+x
进入单用户模式。 -
接着,在光标闪烁的位置中输入:
mount -o remount,rw /
(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图:
-
在新的一行最后面输入:
passwd
, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd…..的样式,说明密码修改成功 -
接着,在鼠标闪烁的位置中(最后一行中)输入:
touch /.autorelabel
(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter) -
继续在光标闪烁的位置中,输入:
exec /sbin/init
(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(提示:这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效了
三 帮助指令
- Linux下隐藏文件是以
.
开头的 man ls
ls -l
以列表的形式显示- 选项可以组合使用:
ls -l -a
orls -la /root
help cd
四 文件管理
-
pwd
显示当前目录的绝对路径 -
-
相对路径
cd /home/tom
想回到/root
目录下:cd ../../root
../
先回到home目录下,再../
回到/ 根目录,然后再去root目录下 -
mkdir /home/dog
mkdir -p /home/animal/tiger
创建多级目录-
移除文件夹目录
rmdir -rf
强制删除
-
touch hello.txt
创建一个空文件 -
cp [选项] source(拷贝对象) dest(拷贝到的地址)
-r
递归复制整个文件夹\cp
强制覆盖不提示的复制 e.g.\cp -r xxxx
-
rm -r
递归删除整个文件夹rm -rf xxx
强制删除整个文件夹不提示rm -f
强制删除不提示 -
mv oldNameFile newNameFile
(两个文件在一个目录下,即为重命名)mv /temp/xxx /targetFolder
(移动文件)也可以移动并且重命名
移动整个目录:
mv /folder /folder
-
cat
查看文件只能查看不能修改
cat -n file
显示行号-
管道指令
|
cat -n /etc/profile | more
执行查看文件后按回车多一行,按空格多一页 -
more 指令:
-
less指令:
e.g.
less /opt/xxx
-
echo指令:输出内容到控制台
输出环境变量:
echo $PATH
echo $HOSTNAME
输出内容:
echo hello,world!
-
head -n 5
(查看文件头五行内容)head filename
(查看文件头10行内容) -
tail -f /home/xxx
实时监控文档所有更新ctrl+C
退出 -
输出重定向:
其中
>
覆盖写;>>
追加写;e.g.
ls -l /home > /home/info.txt
cal >> /home/mycal
(cal 显示当前日历信息) -
ln指令:类似于快捷方式
e.g.
ln -s /root /home/myroot
rm /home/myroot
-
history
(看所有的)history 10
(最近的十条)!5
执行曾经执行过的第五条指令
-
Lesson 4
一 时间日期指令
-
-
date 指令:来设置日期
date -s “2020-11-03 20:02:18”
-
cal指令
cal 2020
(显示一整年的日历)
二 搜索查找
- find指令:
-
ls -lh
可以把存储容量变成直观的 -
locate指令:快速定位文件的路径
-
which
指令,可以查看某个指令在哪个目录下which reboot
-
grep 过滤查找:
方法一:
cat /home/hello.txt | grep -i -n "yes"
方法二:
grep -n "yes" /home/hello.txt
三 压缩和解压
-
gzip压缩、gunzip解压指令:
gzip /home/hello.txt
gunzip /home/hello.txt.gz
-
zip压缩文件或者目录、unzip解压:
zip -r
压缩目录unzip -d /xxx
指定解压后文件的存放目录e.g.
zip -r myhome.zip /home/
将home目录及其包含的文件和子文件夹都压缩
unzip -d /opt/tmp /home/myhome.zip
-
tar指令:打包指令,打包后是xxx.tar.gz的文件
-z
是通过gzip进行压缩和解压-
tar -zcvf pc.tar.gz pig.txt cat.txt
-
tar -zcvf myhome.tar.gz /home/
-
tar -zxvf pc.tar.gz
-
tar -zxvf /home/myhome.tar.gz -C /opt/tmp
其中-C
表示解压到指定目录
-
Lesson 5
一 组管理和权限管理
-
在Linux中的每个用户必须属于一个组
在Linux中每个文件有所有者、所在组、其它组的概念
-
查看文件的所有者:
ls -ahl
-
改变文件的所有者:
chown 用户名 文件名
e.g.chown tom apple.txt
-
修改文件所在的组:
chgrp 组名 文件名
-
其他组:
改变用户所在的组:
usermod -g 新组名 用户名
改变该用户登录的初始目录:
usermod -d 目录名 用户名
用户需要有权限进入新目录e.g.
usermod -g wudang zwj
orusermod -d /home/haha zwj
二 权限基本介绍
-
第0位的
-
代表普通文件[r] read 可读 4
[w] write 可修改 但不一定可以删除该文件,除非对该文件所在的目录有写的权限 2
[x] execute 可被执行 1
-
-
修改权限
r=4,w=2,x=1 rwx=7
chmod u=rwx,g=rx.0=x 文件
等价于chmod 751 文件
-
修改文件所有者 chown
chown newowner 文件/目录
改变所有者e.g.
chown tom /home/abc.txt
chown tom:groupname /home/abc.txt
chown -R tom /home/kkk
一定要带上所有者tom -
修改所在组
chgrp newgroup 文件/目录
三 文件夹的rwx的讨论
- 对文件夹有执行权限可以进入该文件夹,有了读权限可以读取,写的权限是删除,创建的权限
- x:表示可以进到该目录 r: 表示可以ls,来读取目录 w: 表示可以删除创建
- linux下一切皆文件
Lession 6
一 crond 任务调度
-
crontab
进行定时任务的设置 -
crontab -e
编辑定时任务crontab -l
查询任务crontab -r
删除当前用户所有任务 -
e.g.
*/1 * * * * ls -l /etc/ >/tmp/to.txt
-
-
-
service crond restart
重启
二 at 任务调度机制
-
-
ps -ef | grep atd
可以检测atd 是否在运行 -
-
at 的时间定义
-
案例1:
at 5pm + 2 days
回车
/bin/ls /home
输入两次Ctrl+D
-
案例2:
at 5pm tomorrow
-
案例3:
at now + 2 minutes
-
atq
查看系统中没有执行的工作任务 -
atrm
删除已经设置的任务 -
相关指令选项
三 磁盘分区机制
-
分区与文件系统
-
挂载mount
-
SCSI硬盘标识为”sdx~“
-
lsblk -f
更加详细的信息list blockFSTYPE:
文件类型UUID:
每个分区的唯一标识符40位MOUNTPOINT:
挂载点 -
新增硬盘的分区操作:
fdisk /dev/sdb n p 1 w
-
格式化磁盘:拥有了UUID
mkfs -t ext4 /dev/sdb1
-
将分区与文件系统挂载:添加了挂载点 但重启后会失效
mkdir newdisk mount /dev/sdb1 /newdisk
-
卸载文件系统和分区:
umount /dew/sdb1
-
永久挂载:修改/etc/fstab
添加完成后执行mount -a 即刻生效
-
磁盘情况查询:
df -h
查询系统整体占用情况
查询指定目录的磁盘占用情况:
du -ha --max-depth=1 /opt
a 含文件 h 带计量单位
du -hac --max-depth=1 /opt
c 汇总
-
统计文件夹下文件的个数
ls -l /opt | grep "^-"| wc -l
wc=wordcount 统计
-
统计/opt 文件夹下文件的个数,包括子文件夹里的
ls -l**R** /opt | grep "^-"| wc -l
其中 -R递归的显示所以文件 -
以树状显示目录结构
tree /目录
四 网络部分
-
NAT网络原理
-
网络配置指令
ifconfig ping
-
网络环境配置
-
设置主机名和hosts映射
五 进程管理
-
基本介绍
程序在内存中运行的情况可以变为进程
每一个执行的程序都是一个进程
-
显示系统执行的进程:process status
ps -a 显示所有
ps -u 以用户的格式显示
ps -x 显示后台进程运行的参数
ps -e 显示所有进程
ps -f 全格式
-
USER:进程执行用户
PID:进程号
MEN:物理内存占用百分百
VSZ: 占用虚拟内存
RSS:占用物理内存
TTY:终端信息
STAT:当前进程运行状态 R:休眠 R:正在运行
START:开始时间
TIME:占用的CPU时间
COMMAND:进程名,启用指令
-
父进程,子进程
- 终止进程
killall abc
kill -9 进程号
强制关闭进程
kill 对应的进程号
-
查看进程树pstree
pstree -p
显示PIDpstree -u
显示进程的所属用户 -
服务管理:本质就是进程,但是运行在后台,监听某个端口,来等待其他程序的请求,守护进程
-
sshd通常为22端口;mysqld是3306端口
-
service 服务名 [start | stop | restart | reload | status]
-
CentOS7.0 以后很多服务不再用service,而用systemctl
-
service指令管理的服务在
/etc/init.d
查看 -
setup
可以查看所以服务 -
服务的运行级别:
-
systemctl set-default multi-user.target
设置开机的运行级别为3 -
chkconfig
指令:-
可以给服务的各个运行级别设置自启动
-
其管理的服务在
/etc/init.d
查看 -
CentOS7.0以后,很多使用
systemctl
管理
chkconfig --list
chkconfig --level 3 network off
关闭运行级别3 network 自启动 -
-
systemctl
管理指令systemctl list-unit-files
查看服务开机启动状态systemctl enable/disable 服务名
默认设置3和5级别,设置后永久生效设置完成后,重启就失效
-
firewall
指令firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --reload
每次设置好后需要reload才能生效 -
动态监控 (ps是静态的)
top -d 秒数
每隔x秒更新top -i
top不显示闲置和僵死的进程top -p
指定监控某个进程ID -
top以后输入P 按CPU使用率排序
top以后输入u 再输入用户名 进行监控
top以后输入k 输入进程号 ,再输入signal 9 强制关闭进程
-
监控网络状态
netstat -an
按一定顺序排列输出netstat -p
显示哪个进程在调用
六 rpm和yum包管理
-
rpm -qa | grep xx
-
rpm -e 包名
erase 卸载rpm -e --nodeps foo
强制删除 -
安装
rpm -ivh 路径
i=install v=verbose 提示 h=hash 进度条
-
yum list|grep xxx
查询yum服务器有什么可以安装的软件yum install xxx
来安装
补充
一 tmux ——Terminal MultipleXer 终端复用器
-
启动tmux
[root@Outis ~]# tmux new -s NewName
-s
表示session,启动一个全新的会话,名字可以自定义 -
在窗口中切换
- 第一步:按 Ctrl-B 组合键,然后松开
- 第二步:按相应的数字键
-
退出会话
登到某一个会话后,依次按键
ctrl-b
+d
,这样就会退出该会话,但不会关闭会话。 如果直接ctrl + d
,就会在退出会话的通话也关闭了该会话![root@Outis ~]# tmux new -s NewName [detached]
-
回到原有会话
[root@Outis ~]# tmux ls
以上操作完成了查看现在正在运行中的程序
[root@Outis ~]# tmux a -t NewName
回到原有的NewName会话中
-
销毁会话
[root@Outis ~]# tmux kill-session -t name
-
重命名会话
[root@Outis ~]# tmux rename -t name newname