Linux
一、Linux发展
1 .前身为unix
2 .GPL协议:非版权原则,免费开源
3 .GNU计划:开发Linux相关软件计划
二、Linux特点
多用户,多任务
三、Linux安装
1、安装虚拟机
安装VMware虚拟机,虚拟机是模拟硬件的软件
VMware安装链接地址,傻瓜式安装即可
2、在虚拟机上安装Linux
Linux安装及使用
Linux的组成:

Linux的目录结构(测试常会用到bin二进制文件,etc配置文件,mnt挂载点,root超级管理员,usr应用程序)
3、远程连接
使用Xshell,Xftp等远程连接工具
测试一般不需要自己安装虚拟机,远程连接即可
我工作中使用SSH软件:mobaxterm 点击可查看mobaxterm安装及使用教程
四、Linux命令
1、常用快捷键
| 序号 | 快捷键 | 作用 |
|---|---|---|
| 01 | tab键 | 命令或者路径提示及补全 |
| 02 | ctrl+c | 放弃当前输入,终止当前任务或程序 |
| 03 | ctrl+1 | 清屏 |
| 04 | ctrl+insert | 复制 |
| 05 | 鼠标右键 | 粘贴 |
| 06 | alt+c | 断开连接 |
| 07 | ctrl+shfit+ R | 新连接 |
| 08 | alt+1/2/3/4/5 | 切换会话窗口 |
| 09 | 上下键 | 查找执行行过的命令,或者是history命令 |
2、终端命令格式
command [-options] [parameter]
说明:
command:命令名,相应功能的英文单词或单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略
[parameter]:传给命令的参数,可以是零个、一个或者多个
例如:
ls -l
touch abc.txt
3、帮助命令
一个命令有很多可选项,死记硬背肯定不行,可借助手册查阅
| 命令 | 内容 |
|---|---|
- -help 帮助信息command --help | 显示command 命令的帮助信息 例如:ls --help |
man 使用手册 man command | 查询 command 命令的使用手册,包含命令、函数的详细使用说明 例如:man ls |
4、其他常用命令

1)查看目录内容
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | ls -a | 查看全部内容,包含隐藏文件 |
| 02 | ls -l | 查看内容的详细信息,效果等同于 ll 命令 |
| 03 | ls -lh | 以人能读懂的方式显示文件大小 |
| 04 | ls -R | 输结构显示某文件夹下的所有文件(包括子文件夹) |
2)创建,删除
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | mkdir [-p] | 要创建的目录(可创建多级目录) 例如: mkdir -p aaa/bbb/ccc 创建三级目录 |
| 02 | rmdir | 要删除的空目录 remove 移除 例如: rmdir aaa |
| 03 | touch | 创建文件(可创建多个文件) 例如: touch aaa.txt bbb.txt 创建多个文件 |
| 04 | rm [-参数] | -f 强制删除,-r 递归删除文件夹必用删除文件 例如:rm -rf *.txt |
3)拷贝,剪切
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | cp [-r] | 可复制文件/文件夹 例如: cp test.txt test1.txt (同目录下复制文件) |
cp -r abc /tmp (递归复制整个文件夹) | ||
| 02 | mv | 剪切移动文件/文件夹,自带重命名功能例如:mv aaa1 bbb1(aaa1文件夹改名为bbb1) |
mv a1 test(把a1文件夹放到test文件夹内) |
4)cat查看文件内容(小)
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | cat [-b] | 列出行号,非空白行有行号显示,空白行不标行号 例如:cat -b abc.txt |
| 02 | cat [-E] | 结尾字节以$显示出来 例如:cat -E abc.txt |
| 03 | cat [-n] | 列出行号,空白行也会有行号,与-b的选项不同 例如:cat -n abc.txt |
| 04 | cat [-T] | 将【tab】按键以^I显示出来例如:cat -T abc.txt |
| 05 | cat [-v] | 列出一些看不出来的特殊字符 例如:cat -v abc.txt |
| 06 | cat [-A] | 相当于-vET的整合选项,可列出一些特殊字符而不是空白而已例如:cat -A abc.txt |
5)more查看文件内容(可精细操作,大)
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | more 文件名 | 空格键:向下翻动一页 |
| Enter:向下翻动一行 | ||
| q:离开more这个程序,不再显示该文件内容 | ||
| Ctrl+F:向下滚动一屛 | ||
| Ctrl+B:返回上一屏; | ||
| = :输出当前行的行号 |
6)less查看文件内容(可精细操作,大)
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | less 文件名 | 空格键:向下翻动一页 |
| Enter:代表向下翻一行 | ||
| q:离开less这个程序,不再显示该文件内容 | ||
| 下箭头[pagedown]:向下翻动一页 | ||
| 上箭头[pagedown]:向上翻动一页; | ||
| = :输出当前行的行号 | ||
| /搜索内容:向下搜寻【搜索内容】的功能;n:向下查找,N:向上查找 |
7)head查看文件内容(只看头几行)
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | head 文件名 | 查看前10行 |
| 02 | head -n 3 文件名 | 查看文件的前3行 |
| 03 | head -c 3 文件名 | 查看文件的前3个字符 |
8)tail查看文件内容(只看尾巴几行,可实时追踪更新)
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | tail 文件名 | 查看最后10行 |
| 02 | tail -n 3 文件名 | 查看文件的最后3行 |
| 03 | tail -f 文件名 | 实时追踪该文档的所有更新 |
| 04 | tail -5f 文件名 | 实时追踪该文档的最后5行,监听状态 |
9)打tar包,解tar包(打包之后的大文件需要以.tar 结尾,文件大小不变)
create,verbosely(进度),file(.tar结尾),x(extract提取),-C(更改目录位置)
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | tar -cvf 打包名.tar 被打包的目录 | 将该目录下的文件打包成一个大文件 |
| 02 | tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3 | 将一系列文件打包成一个大文件 |
| 03 | tar -xvf 打包名.tar | 将一个打包后的分解成一系列小文件,当前位置 |
| 04 | tar -xvf 打包名.tar -C 解包路径位置 | 将一个打包后的分解成一系列小文件,指定位置 |
10)gzip,bzip2压缩,解压缩(文件压缩)
z(gzip压缩),j(bzip2压缩)----z,j互换即可
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | tar -zcvf 打包压缩名.tar.gz 被压缩的文件/目录 | 压缩文件 |
| 02 | tar -zxvf 打包文件.tar.gz | 解压缩文件 |
| 03 | tar -zxvf 打包文件.tar.gz -C 目录路径 | 解压缩到指定路径 |
11)date时间日期
date 显示当前时间
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | date +%Y | 显示当前年份 |
| 02 | date +%m | 显示当前月份 |
| 03 | date +%d | 显示当前是哪一天 |
| 04 | date +%Y%m%d | 显示当前年月日各种格式 |
| 05 | date “+%Y-%m-%d %H:%M:%S”,或者单引号也可以 | 显示当前年月日时分秒 |
| 06 | date +%d | 显示当前是哪一天 |
date显示非当前时间
| 序号 | 命令 | 作用 |
|---|---|---|
| 01 | date -d ‘1 days ago’ | 显示前一天日期 |
| 02 | date -d yesterday +“%Y-%m-%d” | 显示前一天日期 |
| 03 | date -d next-day +“%Y-%m-%d” | 显示明天日期 |
| 04 | date -d ‘next monday’ | 显示下周一时间 |
12)搜索与查找命令find,grep
| 序号 | 命令 | 按照文件名查找 |
|---|---|---|
| 01 | find /etc -name yum.conf | 在/etc目录下文件yum.conf |
| 02 | find /etc -name ‘yum’ | 使用通配符*(@或者任意多个)。表示在/etc目录下查找文件名中含有字符中’yum’的文件 |
| 03 | find . -name ‘yum*’ | 表示当前目录下查找文件名开头是字符串’yum’的文件 |
| 序号 | 命令 | 按照文件特征查找 |
|---|---|---|
| 01 | find / -atime -2 | 查找在系统中最后48小时访问的文件(AccessTime,文件读取访问时间) |
| 02 | find / -empty | 查找在系统中为空的文件或者文件夹 |
| 03 | find / -group susan | 查找在系统中属于group为susan的文件 |
| 04 | find / -mtime -1 | 查找在系统中最后24小时里修改过的文件(modify time) |
| 05 | find / -user susan | 查找在系统中属于susan这个用户的文件 |
| 06 | find / -size +10000c | 查找出大于10000000字节的文件(C:字节,W:双字,K:KB,M:MB,G:GB) |
| 07 | find / -size -1000k | 查找出小于1000KB的文件 |
| 序号 | 命令 | 使用混合查找方式查找文件,参数有:!,-and(-a),-or(-o) |
|---|---|---|
| 01 | find /tmp/ -size +10c and -mtime +2 | 在/tmp目录下查找大于10字节并在最后48小时内修改的文件 |
| 02 | find / -user root -or -user susan | 在/目录下查找用户是root或者susan的文件文件 |
| 03 | find /tmp !-user susan | 在/tmp目录中查找所有不属于susan用户的文件 |
| 序号 | 命令 | grep [options] 范围,grep是根据文本内容进行查找 |
|---|---|---|
| 01 | grep -c 范围 | 只输出匹配行的计数 |
| 02 | grep -i 范围 | 不区分大小写 |
| 03 | grep -n 范围 | 显示匹配行及行号例如:grep -n name aaa.xml(统计aaa.xml文件内name字符的行号) |
| 04 | grep -w 范围 | 显示整个单词 |
| 05 | grep -r 范围 | 递归查询 |
13)vi编辑器
| 序号 | 命令 | vim是vi的升级版本,有更多功能 例:vim 文件全名 |
|---|---|---|
| 01 | :wq | 退出且保存,:q! 退出且不保存 |
| 02 | vim 文件全名 | 进入文件 |
| 03 | i a o | 编辑模式,i:光标不动 a:光标到下一个字符 o:另起一行 |
| 04 | Esc键 | 命令行模式 |
5、组合命令
1)重定向输出>和>>
cat 文件名>a.txt 将输出定向到a.txt中
cat 文件名 >>a.txt 输出并且追加
2)管道“|”
将一个命令的输出作为另一个命令的输入
例如:ps -ef | grep java(查找所有进程中包含java的进程)
例如:ls --help | more(像翻书一样查看ls 的帮助信息)
3)逻辑控制&&
&& 与 连接,左边的成功执行完,右边的才能执行
cp 1.txt 2.txt && cat 2.txt(复制后查看)
4)history查看所敲命令历史
history > 4.txt(把历史内容写到4.txt文件中)
6、系统管理命令
1)useradd添加新用户
| 序号 | 命令 | 注意:当前用户必须有添加用户的权限 |
|---|---|---|
| 01 | useradd 用户名 | 添加新用户 |
2)passwd设置用户密码
| 序号 | 命令 | 注意:当前用户必须有添加用户的权限 |
|---|---|---|
| 01 | passwd 用户名 | 设置用户密码 |
3)id判断用户是否存在
| 序号 | 命令 | 注意:当前用户必须有添加用户的权限 |
|---|---|---|
| 01 | id 用户名 | 判断用户是否存在 |
4)su切换用户
| 序号 | 命令 | 注意:当前用户必须有添加用户的权限 |
|---|---|---|
| 01 | su 用户名 | 切换用户,只能获得用户的执行权限,不能获得环境变量 |
| 02 | su - 用户名 | 切换到用户并获得该用户的环境变量及执行权限 |
5)userdel删除用户
| 序号 | 命令 | 注意:当前用户必须有添加用户的权限 |
|---|---|---|
| 01 | userdel 用户名 | 删除用户但保存用户主日录 |
| 02 | userdel -r 用户名 | 用户和用户主目录,都删除 |
6)who查看登录用户信息
| 序号 | 命令 | 注意:当前用户必须有添加用户的权限 |
|---|---|---|
| 01 | whoami | 显示自身用户名称 |
| 02 | who am i | 显示登录用户名称 |
| 03 | who | 看当前有哪些用户登录到了本台机器上 |
7)设置Linux普通用户具有root权限即sudo的使用
| 序号 | 命令 | 注意:可使用临时管理员完成添加 |
|---|---|---|
| 01 | sudo useradd 用户名 | 设置用户名 |
| 02 | sudo passwd 密码 | 设置密码 |
| 03 | sudo reboot | 立即重启linux计算机 |
使用临时管理员完成添加的操作:
1.sudo命令—允许系统管理员让普通用户执行一些或者全部的root命令
2.修改配置文件修改 /etc/sudoers文件,找到下面一行,在root下面添加一行
vim/etc/sudoers
在文件里编辑以下内容,添加临时管理员tom:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(ALL) ALL
3.使用tom临时管理员权限用户登录,操作管理员命令
sudo useradd 用户名
sudo passwd 密码
8)用户组管理命令
| 序号 | 命令 | 注意:系统对用户进行集中管理,cat /etc/group查看创建了哪些组 |
|---|---|---|
| 01 | groupadd 组名 | 新增组 |
| 02 | groupdel 组名 | 删除组 |
| 03 | groupmod -n 新组名 老组名 | 修改组名 |
9)usermod修改用户
| 序号 | 命令 | cat /etc/group查看创建了哪些组 |
|---|---|---|
| 01 | usermod -g 用户组 用户名 | 修改组内用户,也可添加用户进组 |
| 02 | groupdel 组名 | 删除组 |
| 03 | groupmod -n 新组名 老组名 | 修改组名 |
10)文件权限(可用ll查看具体权限)

| 序号 | 命令 | 文件权限 |
|---|---|---|
| 01 | chmod 777 1.txt ; chmod +x 1.txt | 修改文件权限(777,755权限 |
| 03 | chgrp 最终用户组 | 改变文件或目录的所属组 |
11)系统与进程管理
| 序号 | 命令 | pid进程号 |
|---|---|---|
| 01 | df -h;du -h[目录名称] | disk free 显示磁盘剩余空间,disk usage 显示目录下的目录大小(-h人性化展示) |
| 02 | ps -aux;ps -ef | ps查看系统中所有进程 |
| 03 | top | pid进程号,top查看系统健康状态 |
| 04 | kill -9 pid进程号 | 杀死进程 |
12)网络管理命令
| 序号 | 命令 | 显示网络统计信息 |
|---|---|---|
| 01 | netstat [选项] | -a(连接和监听端口),-b,-e(以太网统计信息),-n(地址和端口),-o(进程id),-p TCP(显示指定协议的连接) |
13)CPU情况查看
| 序号 | 命令 | CPU详情 |
|---|---|---|
| 01 | lscpu | 查看CPU的详细信息,包括架构、核心数、每个核心的线程数、CPU的频率等 |
| 02 | mpstat | 查看cpu每个核心使用情况 |
7、linux安装第三方工具
1)rpm软件包管理器
实现对软件的安装,查询,卸载
| 序号 | 命令 | rpm的使用 |
|---|---|---|
| 01 | rpm -q(查询) -a(所有) -i(信息) -l(所有相关文件) -f(文件对应rpm包) | 查询已安装的rpm列表 |
| 02 | rpm -e(卸载) | rpm -e --nodeps 软件包名称(卸载前跳过依赖检查) |
| 03 | rpm -ivh(安装) | -i(安装) -v(打印提示信息) -h(显示安装进度) |

2)yum软件包管理器(需要联网)
基于rpm,指定路径自动下载,安装,处理依赖关系
| 序号 | 命令 | yum的使用(可安装httpd软件) |
|---|---|---|
| 01 | yum list | 显示所有已安装和可以安装的程序包 |
| 02 | yum -y install 需要的软件包 | 下载安装 |
| 03 | yum -y remove 需要卸载的软件包 | 卸载 |
| 04 | yum repolist | 列出设定yum源信息 |
| 05 | yum clean all | 清除yum缓存信息 |
3)软件安装注意事项
1.安装JDK,需卸载openjdk
(1)、切换到root用户并进入user目录:cd/usr
(2)、在usr目录下创建java文件夹:mkdir java
(3)、将jdk-7u71-linux-x64.tar.gz拷贝或上传到java目录下(也可以用工具 )
(4)、进入/usr/java文件夹下:cd/usr/java/
(5)、修改权限,参数”jdk-7u71-linux-x64.tar.gz"为你自己上传的jdk安装文件
chmod 755 jdk-7u71-linux-x64.tar.gz
(6)、解压:tar -zxvf jdk-7u71-linux-x64.tar.gz
(7)、配置环境变量
vi /etc/profile
添加内容:export 主要用来设置环境变量

(8)、重新编译环境变量
source /etc/profile
(9)、测试
java -version
2.安装tomcat,和安装jdk类似
(1)、创建安装目录,给tomcat文件权限,解压tomcat的tar包
(2)、进入tomcat的bin目录,启动tomcat的web服务
./startup.sh
(3)、查看tomcat日志(显示最后200行内容)
tail -200f /usr/tomcat/apache-tomcat-7.0.57/logs/catalina.out
3.安装Mysql,卸载系统自带Mysql
(1)、查询Mysql,卸载系统自带Mysql
rpm -qa | grep mysql
rpm -e --nodeps 系统mysql全名
(2)、下载安装官网yum源(需要联网),先查看源仓库后下载
ll /etc/yum.repos.d/
wget -p /usr/software http://repo,mysql,com/mysql-community-release-el6-5.noarch.rpm
(3)、解决中文乱码,修改配置文件改为utf8,重启
(4)、Mysql客户端远程连接数据库,需给root授权并刷新权限
#给root授权:既可以本地访问,也可以远程访问
grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
刷新:flush privileges
五、Linux实战演练
1、多Linux服务器部署操作
1)克隆
关闭当前centos,右击–>管理–>克隆
2)配置
开启虚拟机,vi编辑ifcfg-ens33修改ip地址,重启:systemctl restart network
修改主机名:hostnamectl set-hostname xxx,重启
3)关闭三台虚拟机防火墙
查看防火墙状态:systemctl status firewalld
关闭防火墙:systemctl stop firewalld
设置防火墙开机自关:systemctl disable firewalld
4)关闭安全策略selinux
vi编辑:vi /etc/selinux/config
注释掉selinux=enforcing,添加selinux=disabled
5)三台机器免密登录,ssh协议使用秘钥
方法一:ssh基于密码远程登录:ssh ip地址
vi编辑进入,将ip地址与linux虚拟机名映射:vi /etc/hosts
举例:
192.168.80.100 centos7-1
192.168.80.101 centos7-2
192.168.80 102 centos7-31
修改完保存后,即可通过:ssh centos7-1(虚拟机名)连接
方法二:ssh基于秘钥实现免密登录

6)三台机器时间同步
date查看本机当前时间,设置时间:date -s ‘2025-04-11 15:58:20’
通过命名和时钟服务器同时间:ntpdate us.pool.ntp.org(未找到需yum下载ntpdate)
2、Linux Shell编程
查看linux里的shell编译器 cat /etc/shells
1)编写脚本
vim hello.sh(编辑一个不存在的文件,编辑后保存,文件自动创建)
#!/bin/bash
echo 'hello lagou'
2)执行shell脚本
# /bin/sh hello.sh(文件得在/bin/sh目录下,用/bin/sh目录下的解析器)
# /bin/bash hello.sh(同理)
# bash hello.sh(用bash解析器)
# sh hello.sh(用bash(sh是bash的快捷方式)解析器)
3)变量
course="java"(定义变量,不能有空格)
hobby="i like ${course}script"
echo $hobby(使用这个变量,$)
readonly 变量名(readyonly命令可以将变量定义为只读变量,使用会报错)
(将/etc下目录的文件名循环出来)
for file in 'ls/etc'
for file in $(ls /etc)
删除变量:unset 变量名(不能删除只读变量)
4)字符串
单引号字符串会原样输出,没法在内部使用其他变量
双引号里面有变量,可以出现转义字符
echo ${#hobby}(获取字符串长度)
echo $(hobby:2)(从第二个字符串截取到字符串结束)
echo $(hobby:2:2)(从第二个字符串截取2个字符串)
echo 'expr index "$hobby" o'(在hobby字符串中查找第一个o出现的位置)
5)运算符
使用expr 工具进行计算
echo expr $a + $b(表达式和运算符中间要有空格,表达式外要有``)
6)流程控制
- if 语句
if then,fi
if then,else,fi


- for 语句
for循环
for i in (list); do
echo $i;
done


- while 语句
(每过1秒打印当前时间)
while true ;
do
echo `date + "%Y-%m-%d %H:%M:%S"`
sleep 1
done
- case 语句
case 值 in
模式1)
模式2)
esac

- 跳出循环
break ,continue

6. 函数
#!/bin/bash
fun1(){
echo "这是我的第一个shell函数!"
}
echo '......函数开始执行......'
fun1
echo '......函数执行完毕......'
3、Linux Shell实战练习
1)统计目录文件
编写一个脚本/root/bin/sumfile.sh,统计/etc,/var,/user目录中共有多少个一级子目录和文件
vim sumfile.sh(执行这条语句)
#!/bin/bash
num1=$(ls -l /etc | wc -l)
num2=$(ls -l /var | wc -l)
num3=$(ls -l /usr | wc -l)
let Num=$num1+$num2+$num3
echo $Num
done
:wq
sh sumfile.sh(执行这条语句)
2)猜数字小游戏
脚本生成一个 100 以内的随机数字,提示用户猜数字,根据用户的输入,提示用户是否猜对,猜大或猜小继续循环猜,猜对跳出循环。
vim demo1.sh(执行这条语句)
#!/bin/bash
num=$[RANDOM%100+1]
while :
do
read -p "计算机生成一个1-100的随机数” cat
if [ $cat -eq $num ];then
echo "猜对了"
break
elif [ $cat -le $num ];then
echo "小了"
else
echo "大了"
fi
done
:wq
sh demo1.sh(执行这条语句)
3)使用case、while和read查看系统信息
编写一个交互脚本,执行脚本时候键盘输入对应的参数,脚本反馈对应信息,当输入为“exit”时候脚本退出。脚本采用 read 捕捉键盘输入信息,然后使用 case 进行条件选择并执行命令,最后使用 while 对 case 语句进行循环。
vim demo2.sh(执行这条语句)
#!/bin/bash
#EOF(End Of File)表示文本结束符。注意:E0F必须顶行写,前面不能用制表符或者空格。
#cat << EOF的意思是以EOF输入字符为标准输入结束,就是当你输入cat<< EOF的时候,你可以随意输入字符,但是当输入EOF#的时候就结束了
cat << EOF
D|d 显示硬盘信息
M|m 显示内存信息
S|s 显示交换分区信息
EOF
read -p"请输入以上对应参数:"CANSHU
while[$CANSHU !="exit"];do
case $CANSHU in
d|D)
df -h
;;
m|M)
free -m | grep Mem
;;
s|S)
free -m | grep Swap
;;
*)
echo "Unknow"
;;
esac
read -p "请确认以上参数" myparam
done
:wq
sh demo2.sh(执行这条语句)
1887

被折叠的 条评论
为什么被折叠?



