安装VMware
安装centos
安装xshell + xftp,连接centos
// centos 命令行输入,查看centos系统ip地址
ifconfig
// window系统命令行输入,ping下 centosip地址。看是否能通
ping 192.168.0.5
vi和vim编辑器
-
三种模式: 正常(一般)模式、插入(编辑)模式、命令模式;注意 ‘命令行下’ 和 ‘命令模式’,不是同一个意思
image.png
正常模式下
yy 复制当前行,5yy复制当前行向下的5行
p 粘贴
dd 删除当前行, 5dd 删除当前行向下的5行
G 最后一行
gg 第一行
u 撤销上一步操作
定位到具体20行 20 shift+g
输入/ 查询的字符, n 查找下一个;再输入/,重新查找其他字符
设置行号 :set nu
取消行号:set nonu
关机&重启
image.png用户登录和注销
su - 用户名 进入用户(在用户链末尾,增加一个用户)
logout 退出登录(在用户链末尾,弹出一个用户)
用户链
用户管理
- 添加删除用户
useradd milan // 增加milan用户,并且增加文件夹 /home/milan
useradd -d /home/tst king 增加king用户,并且指定增加文件夹 /home/tst
passwd 用户名 // 一定要加用户名,不加,是给当前使用系统的用户,设置密码
userdel milan // 删除milan
userdel -r milan // 删除milan,并且删除 /home/milan 目录
id 用户名// 查看用户信息;例如:id root
who am i // 查看当前登录linux用户信息,不是使用的用户信息
- 用户组
groupadd wd // 添加组wd
groupdel wd // 删除组wd
// 如果添加用户,没有指定组,系统自动生成一个和用户名相同的组
useradd -g wd zwj // 给新增加的用户,指定组
usermod -g 用户组 用户名 // 给用户换组
/etc/passwd 用户配置文件,记录用户的信息
/etc/shadow 口令的配置文件
/etc/group 组的配置文件,记录组的信息
image.png
运行级别
// 设置当前运行级别
init 0 // 关闭
init 6 // 重启
init 3 // 非图形界面
init 5 // 图形界面
// 显示当前 运行级别
systemctl get-default
// 设置默认(linux系统开机后)运行级别,用户切换 图形界面 还是 非图形界面
systemctl set-default multi-user.target // 设置成linux系统开机后,采用 非图形界面
systemctl set-default graphical.target // 设置成linux系统开机后, 图形界面
找回root密码 26课
文件目录指令
// 选项
-f 强制 (force)
-r 递归 (recursion)
pwd // 当前目录的绝对路径
cd // 直接cd 回到家目录
mkdir 目录 // 创建目录 mkdir -p /home/dog/tirger/cat 加上选项-p可以创建多级目录
rmdir 目录 // 删除空目录;如果有内容需要递归删除,rm -rf 目录
touch 文件 // 创建空文件
cp 文件或目录 目的目录 // 拷贝文件或目录;递归拷贝目录下面所有内容 : cp -r 文件或目录 目的目录;强制拷贝覆盖,不提示:\cp -r 文件或目录 目的目录
rm 文件或目录 // 删除文件或目录 ; 强制递归删除 rm -rf 文件或目录
mv 文件或目录 目的文件或目录 // 移动、重命名 :文件或目录;前后名字不同,会重命名
cat 文件 // 查看文件 ; cat -n 文件 : 查看文件带行号
more 详细见下图
less 详细见下图
image.png
image.png
echo 变量或内容 // 输出内容到控制台;echo $PATH ;echo "hello world"
tail 文件 // 默认显示文件末尾10行
tail -n 5 文件 // 显示文件末尾5行
tail -f 文件 // 监控文件变化(退出监控:ctrl+c)
head 文件 // 默认显示文件头部10行
head -n 5 文件 // 显示文件头部5行
image.png
ln -s /root /home/myroot // 给/root创建快捷方式 ,到在/home/myroo
rm -f /home/myroot // 删除快捷方式,和删除文件一样,不是删除文件夹
history // 查看 历史执行命令列表,显示所有执行的命令
history 10 // 显示最近10个
!5 // 执行 历史列表 编号为5的那条命令
时间日期
date // 显示当前时间
date "+%Y-%m-%d %H:%M:%S" // 显示 年月日时分秒 ; data "+%Y" 这样就是显示年
date -s "2021-11-03 09:00:05" // 设置日期时间
cal // 显示日历(不加选项,显示本月日历)
cal 2020 // 显示 哪一年的日历
搜索查找
find [哪个文件夹下查询] [选项]
选项:
-name 文件名
-user 用户
-size 文件大小 (+n大于,-n小于,n等于;单位K M G )
find /home -name *.js
find /home -user houchen | more
find /home -size -1M
ll -h // -h选项,是让列表信息,更让人看的懂
updatedb
locate hello.js
which 指令 // 可以查看指定在哪个目录下
grep "var" hello.js // 显示 在hello.js 中 含有var 内容的行
grep -n "var" hello.js // 带行号显示出来
grep -i "var" hello.js // 查询内容不区分大小写
压缩和解压
// gzip 和 gunzip
gzip Hello.js
gunzip Hello.js.gz
// zip 和 unzip
zip He Hello.js // 把Hello.js压缩成He.zip
zip -r myHome.zip /home // 选项 -r 递归压缩,既压缩文件夹
unzip Hello.zip
unzip -d /opt/tmp myHome.zip // 选项 -d ,指定解压到哪个文件夹下
// tar
//压缩多个文件
tar -zcvf hw.tar.gz /home/hello.js /home/world.js
//压缩文件夹
tar -zcvf home.tar.gz /home
// 解压到当前目录
tar -zxvf hw.tar.gz
// 解压到指定目录
tar -zxvf home.tar.gz -C /opt/tmp
文件权限
- 一个文件有三个层级的权限:所有人、所有组、其他组
-
权限分3种:r 读取权限、w写入权限、x执行权限
image.png
chown 用户名 文件名 // 修改文件所有者
chown 用户名:组名 文件名 // 修改文件所有者和所在组
chown -R 用户名:组名 文件名 // 修改文件所有者和所在组;如果是文件夹,递归执行
chgrp 组名 文件名 // 修改文件所在组
chgrp -R 组名 文件名 // 修改文件所在组;如果是文件夹,递归执行
usermod -g 新组名 要改组的用户名 // 给用户换组
usermod -d 新的家目录名 要改家目录的用户名 // 修改用户登录后,进入的初始目录
image.png
image.png
chmod u=rwx,g=rw,o=x hello.js
crontab 定时任务调度【相当于setInterval】(crontab 这个程序,在centos开机的时候,就默认开启不断监听有哪些要执行的任务)
crontab -e // 进入 vi编辑模式
*/1 * * * * ll /etc/ > /root/to.txt
crontab -r // 删除所有任务
crontab -l // 列出所有任务
service crond restart // 重启 任务调度 程序
crond语法
crond时间规则
at定时任务【相当于setTimeout】
ps -ef | grep atd // 查看 /usr/sbin/atd -f 有没有执行,只有它执行了,才能启动at定时任务
at [选项] [时间]
ctrl + D 结束at命令的输入, 输入两次 ctrl + D
atq 查询系统中的任务列表
atrm 编号 // 删除at任务
// 1. 两天后下午5点,执行 ls /home 命令
at 5pm + 2 days
at> ls /home
// 2. 两分钟后,执行 date > /root/mydate
at now + 2 minutes
at> date > /root/mydate
atd任务
at 时间
磁盘
增加磁盘分5步:
- 虚拟机添加磁盘
在Vmware上左侧,我的计算机 - 找到要添加磁盘的系统 - 右键系统 - 设置 - 左下角添加按钮 - 选择磁盘 - scsi - 创建新的虚拟磁盘 - 将虚拟磁盘拆分成多个文件 - 完成 - 确认。重启系统
lsblk 或者 lsblk -f // 查看磁盘信息
新增磁盘
- 分区
fdisk /dev/sdb // 磁盘分区命令;所有的设备都在dev目录下,新增的磁盘叫sdb
m
n
p
1
回车
回车
m
w
// 查看磁盘信息,磁盘有一个分区了,但是没有格式化信息
lsblk -f
添加分区
- 格式化
mkfs -t ext4 /dev/sdb1 // 磁盘格式化命令
// 查看磁盘信息,有格式化信息了
lsblk -f
分区格式化
- 挂载
// 1. 先创建一个目录
cd /
mkdir newdisk
// 2. 挂载命令
mount /dev/sdb1 /newdisk/
有挂载目录了
- 卸载
umount /dev/sdb1 或者 umount /newdisk // 卸载命令,分区 或者 挂载的目录
- 永久挂载;新增磁盘和分区、格式化,重启后都在,但是挂载重启后,就不在了,需要使用永久挂载
vim /etc/fstab
mount -a // 立即生效
reboot // 重启不会失效
永久挂载
查看磁盘情况
// 查看磁盘情况
df -h
// 查看目录的磁盘占用情况
du -ha
// 递归查看opt目录里的文件个数(R:递归)
ls -lR /opt | grep "^-" | wc -l
image.png
网络配置
虚拟机网络配置设置
在Vmware最上面(菜单栏)- 编辑 - 虚拟网络编辑器 - NAT设置
在window上,也可以改虚拟机的网络配置,因为虚拟机就是在window系统上,创建了一个虚拟网卡,实际配置,还是建立在window系统上。
centos系统网络设置
-
图形界面设置:进入centos最上面(菜单栏) - 应用程序 - 系统工具 - 设置 - 网络
image.png - 命令设置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
// 需要修改的代码
BOOTPROTO="static"
// 需要追加的代码
IPADDR=192.168.200.130
GATEWAY=192.168.200.2
DNS1=192.168.299.2
image.png
虚拟机网卡配置,网段也要设置成200
image.png
NAT网关设置也要配置成200
image.png
最后重启 网络服务 或者 重启系统(reboot)
// 重启 网络服务
service network restart
设置主机名和hosts映射
hostname // 查看主机名
vim /etc/hostname // 修改这个文件,可以修改主机名;修改后,要重启系统
// 设置hosts映射
vim /etc/hosts // Linux 修改这个文件,可以修改hosts映射
DNS
Domain Name System 域名系统:是互联网上作为域名和IP地址相互映射的一个分布式数据库
ipconfig/displaydns // 显示DNS域名解析缓存
ipconfig/flushdns // 手动清理dns缓存
浏览器访问一个域名,域名 解析过程:
- 先去浏览器 域名缓存找;没有找到,
- 再到 操作系统 dns域名缓存找;还没找到
- 再到 hosts文件里找;还没找到;
-
再到 电脑网络配置,设置的dns对应的ip地址上去找;见下图
电脑网络配置,设置的dns对应的ip
进程管理
每个进程都会分配一个id号,称为进程号:pid
一个程序运行起来了,就是启动一个进程。可分为前台和后台,前台就是用户可以在屏幕上操作的。后台程序,在执行,但是用户无法操作;系统服务一般都是后台程序
image.png
- 查看进程
// 查看所有正在执行的进程
ps -aux
// 查询一个正在执行的进程
ps -aux | grep sshd
// 查询一个进程的父进程(PPID)
ps -ef | grep sshd
image.png
进程图
// 查看进程树
pstree [选项]
选项:
-p 显示进程的PID
-u 显示进程的所属用户
- 终止进程 / 杀进程
kill [选项] 进程号
killall 进程名
// 踢掉tom登录用户
ps -aux | grep sshd // 查询登录的所有用户进程id; sshd是远程登录服务;如果直接:kill sshd的进程id,远程就登录不上了
kill tom的那个登录进程id
// 重启sshd服务
/bin/systemctl start sshd.service
终止进程
服务(service)管理
服务: 本质就是 后台运行的进程,也叫 守护进程,也叫 服务
service 服务名 [start | stop | restart | reload | status]
service network status // 查看网络服务的状态
ll /etc/init.d // 查看centos7后,能使用service管理的服务
image.png
setup // 查看系统所有服务
按键盘上下箭头选择行,按空格切换是否自动启动 ;按Tab键,切换操作按钮;回车确认
image.png
systemctl 指令
systemctl [start | stop | restart | status] [服务名] // 设置服务状态,系统重启后失效
systemctl stop firewalld // 关闭防火墙服务
ll /usr/lib/systemd/system // 查看 systemctl 管理的所有服务,以及对应的状态
systemctl list-unit-files | grep [服务名] // 查看 systemctl 管理的服务 开机启动状态
systemctl [enable | disabled] [服务名] // 设置 systemctl 管理的服务 , 在3,5两个运行级别的,开机启动状态,系统重启后还是有效
systemctl
防火墙
window系统访问linux系统,为例:
- window系统上有两个程序 mysql客户端、xshell6;去连接 linux
- 到linux防火墙,防火墙开启;如果防火墙设置开启22端口,就能连接到sshd服务;但是没有开启3306,不能连接到 mysql服务
-
如果linux防火墙关闭,所有端口都能访问了。
防火墙
测试上面的防火墙例子
linux上,开启防火墙,并查看运行的服务和端口
systemctl start firewalld // 开启防火墙
netstat -anp | more // 查看运行的服务和端口
image.png
上图有个111的端口,我们用 window系统命令行, telnet去连接,连接失败
image.png
linux上,关闭防火墙,window系统命令行, telnet去连接,连接成功
systemctl stop firewalld
防火墙打开或关闭指定端口
真正生产环境,防火墙是打开的,这时候就需要打开一些指定的端口,让外部可以请求通信
firewall-cmd --permanent --add-port=111/tcp // 给防火墙 开放端口 列表里 ,增加111端口
firewall-cmd --permanent --remove-port=111/tcp // 给防火墙 开放端口 列表里 ,移除111端口
firewall-cmd --reload // 重启防火墙,才能生效
firewall-cmd --query-port=111/tcp // 查询端口是否在防火墙 开放列表里
firewall-cmd --list-all // 查看防火墙规则列表
image.png
还是上面那个例子,linux上
systemctl start firewalld // 开启防火墙
firewall-cmd --permanent --add-port=111/tcp // 开启111端口
firewall-cmd --reload // 重启防火墙
window系统上,用 telnent 去连接 :telnet 192.168.200.130 111;成功
// 给防火墙 添加 指定ip和端口访问规则(192.168.200.130的机器,可以通过tcp协议访问这台机器的8080端口)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.130" port protocol="tcp" port="8080" accept"
// 移除指定ip和端口访问规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.200.130" port protocol="tcp" port="8080" accept"
// 重启防火墙
firewall-cmd --reload
动态监控进程
top // 默认3秒刷新一次
top -d 5 // 5秒刷新一次
top -i // 不显示闲置和僵死进程
top -p 1 // 指定监控pid为1的进程
top2
监控网络状态
一个服务对应一个端口,有哪些服务开启(端口开启),哪些外部的服务(外部端口)连接成功;
image.png
netstat -an // 按一定顺序输出
netstat -p // 显示进程号pid
netstat -anp // 按一定顺序输出并显示进程号pid
netstat -anp | grep sshd // 查看sshd服务的 网络信息(端口和连接情况等等)
netstat -an
一个服务端口 连接 多个外部端口
rpm包管理工具(相当于node的npm)
rpm的安装包,是.rpm格式的
rpm -qa | grep xx // 查询已安装的rpm列表
rpm -qa | grep firefox // 查看是否安装了火狐浏览器
rpm -q firefox // 查看是否安装了火狐浏览器
rpm -qi [软件包名] // 查看已安装软件的信息
rpm -ql [软件包名] // 查看软件安装的位置和安装后的文件夹含有哪些文件
rpm -e [软件包名] // 卸载软件包
rpm -e --nodeps [软件包名] // 强制卸载软件包
// 查看一个文件,是哪个软件包安装后,生成的
rpm -qf [文件名] // 例如: rpm -qf /etc/passwd
// 安装软件包,要先下载好,放到一个文件夹里,这个安装包 是 .rpm格式的
rpm -ivh [软件包位置] // 安装软件包 i=install v=verbose(提示) h=hash(进度条)
rpm -ivh rpm -ivh /opt/firefox-68.10.0-1.el7.centos.x86_64.rpm // 先卸载 rpm -e firefox ;再安装firefox
安装firefox
先找到安装包,或者下载安装包;系统自带的安装包,在光盘Packages文件夹下。找到需要的包firefox
image.png
再到计算机 - /opt下,粘贴。* 注意: * 需要写入权限
image.png
yum
yum是一个基于shell的软件包管理器,能从指定服务器自动下载rpm包并且安装,可以自动处理依赖关系,一次性安装所有依赖包。
yum list | grep [软件包名] // 查看yum指定服务是否有需要安装的软件包
yum install [软件包名] // 下载并安装软件包,并且下载安装相关依赖
// 安装firefox
yum list | grep firefox
yum install firefox
rpm -q firefox
添加环境变量的两种方法
- 追加系统查找变量路径
vim /etc/profile // 编辑环境变量文件
export PATH=$PATH:/root/node-v12.18.1-linux-x64/bin // 追加环境变量
source /etc/profile // 立即生效
- 在原有系统可查找的变量路径下,创建外联
ln -s /usr/local/node/bin/node /usr/local/bin/
ln -s /usr/local/node/bin/npm /usr/local/bin/
网友评论