Linux操作系统
一、概述
1、基本功能
- 进程和线程管理
- 存储管理
- 文件管理
- 设备管理
- 用户接口
用户和机器之间的接口
2、操作系统层次
- 内核(Kernel)
- 壳(shell)
- 应用程序(APP)
- 壳(shell)
二、Linux安装
- 文件系统:xfs格式
# 关机
shutdown -h now
三、远程管理
1、使用命令行登录
ssh -l root 192.168.0.1
ssh [email protected]
yes
2、上传下载文件命令
# 自带
# 上传
scp D:\1.txt [email protected]:/opt
# 下载
scp [email protected]:/opt D:\1.txt
3、手机登录
工具:juiceSSH
四、Linux文件系统
# 文件系统查看命令
df -h
1、挂载目录简单说明
- /dev: dev是设备的缩写,linux中使用的外部设备
- /dev/shm: 这个目录在内存里,直接读写内存
- /run: 一些运行过程中跟用户和进程有关的数据,属于内核文件
- /sys/fs/cgroup:关于运行过程中CPU、内存等数据,属于内核文件
- /:根目录
- /boot:内核在引导时候使用的文件
- /home:普通用户的家目录
- /run/user/0:编号ID为0的用户(root)在运行中产生的数据
2、文件系统类型
文件系统 | 最大文件名长度 | 最大文件大小 | 最大分区大小 |
---|---|---|---|
ext4 | 255B | 16TB | 1EB |
xfs | 255B | 8EB | 8EB |
3、Linux根目录说明
命令实例 | 作用 |
---|---|
/ | 表示根目录,绝对路径 |
./ | 表示当前目录,是相对路径 |
…/ | 表示上一级目录,相对路径 |
/root | root用户主目录 |
/home/username | 存放普通用户的的个人配置文件 |
/bin | 存放Linux常用命令 |
/boot | 存放系统启动时要用到的文件 |
/dev | 外部设备 |
/etc | 存放系统管理用到的配置文件和子目录 |
/user/sbin | 存放管理员的系统管理程序 |
/lib | 系统的动态链接库,通常是.so结尾,类似Windows的.dll |
/lost+found | 异常错误 |
/mnt | 临时设备挂在目录 |
/proc | 存在系统内存中的信息 |
/usr | 用户应用程序和文件存放的目录 |
/tmp | 临时文件目录 |
/opt | optional 可选目录,默认是空的,用户使用 |
/var | 包含系统运行时要改变的数据 |
- 通常情况下使用/opt和/home目录,用户自由处理的,也可以将程序安装在/opt目录下,默认情况下安装在/usr/bin或/var下。
五、Linux启动级别
命令示例 | 作用 |
---|---|
文件/etc/inittab | 设置默认启动级别 |
0 | 代表halt,关机操作,这个0不能设置否则不能启动 |
1 | 单用户模式,系统只允许一个用户登录 |
2 | 多用户模式,不支持网络工作 |
3 | 命令行界面,文本界面,企业中服务器通用的启动模式 |
4 | 系统预留,该级别目前未使用 |
5 | 图形界面,linux系统启动时带GUI默认的模式 |
6 | 代表重启模式,6也不能设置,会反复重启 |
1、切换启动级别
init 1
init 2
....
2、Linux关机与重启
命令实例 | 作用 |
---|---|
reboot | 重启 |
shutdown -r now | 立即重启 |
shutdown -r 11:30 | 11:30重启 |
shutdown -r +1 | 等一分钟重启 |
halt | 关机 |
shutdown -h now | 立即关机 |
shutdown -h 11:30 | 11:30关机 |
init 0 | 关机 |
init 6 | 重启 |
六、常见命令
1、top
- 类似于windows任务管理器,可以查看cpu,内存,进程等情况
- 按Q或者ctrl+c退出
2、其他命令
命令 | 作用 |
---|---|
cd …/ cd … | 切换目录 |
cd 目录名 | 切换到对应目录 |
pwd | 显示当前所在目录 |
du -sh | 查看文件或文件夹大小 |
fdisk -l | 查看磁盘分区列表 |
free | 查看内存使用情况 |
cat 文件名 | 查看文本内容 cat /etc/passwd 查看用户信息 |
cat /proc/meminfo | 查看内存信息 |
cat /proc/cpuinfo | 查看cpu信息 |
七、VI编辑器的使用
文本内容的编辑
两种模式:命令模式、编辑模式
默认进入命令模式
按i,a进入编辑模式
编辑模式下安esc退出到命令模式
命令实例 | 作用 |
---|---|
vi filename | 生成新文件或编辑查看文件 |
i或者a | 从命令模式进入编辑模式,i为插入文本,a为追加文本 |
esc | 从编辑模式进入命令模式 |
:w | 保存文本 |
:wq | 保存并退出 |
:wq! | 保存并强制退出 |
:q | 退出 |
o | 添加一行 |
O | 在光标所在行的上方添加一行 |
dd | 删除一行文字 |
D | 删除从当前光标到行尾的内容 |
x | 删除一个字符 |
s | 删除一个字符并切换到编辑模式 |
S | 删除一行并切换到编辑模式 |
:n | 光标移至文本第n行 |
$ | 光标移动文本行尾 |
A | 光标移动到文本行尾并切换到编辑模式 |
^ | 光标移动到文本行首 |
G | 光标移动到文本末尾 |
gg | 光标移动到文本首行 |
ZZ | 存盘退出 |
/字符串 | 查找某个字符串 |
n | 继续查找 |
:u | 撤销 |
:redo | 重做 |
八、修改IP地址为静态IP
默认情况下时DHCP自动分配
1、查看网关命令 ip route
# 查看网关
ip route
2、使用vi修改静态ip
- 修改ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@darkid /]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp" # static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2d02c55a-1800-467e-8043-24fb7360256c"
DEVICE="ens33"
ONBOOT="yes"
# 添加
IPADDR="192.168.0.18"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="192.168.0.1"
- 重启网络
systemctl restart network
3、命令行上网
curl https://www.baidu.com
九、文件和文件夹操作
- 修改时间
date -s "2022-10-10 08:06:35"
- 重定向
# 覆盖
>
# 追加
>>
1、文本的创建和查看
功能项 | 命令实例 | 作用 |
---|---|---|
文件创建 | vi /opt/learn/hello.txt | 在opt/learn下创建文件hello.txt,并进入vi |
touch /opt/learn/test | 在opt/learn下创建test空白文件 | |
cat > /opt/learn/catfile << EOF | 创建文件catfile并在屏幕上输入内容,输入EOF结束。不使用<< EOF,ctrl+D也可以 | |
文件查看 | vi etc/passwd | 在vi中输出文本内容 |
cat /etc/passwd | 在屏幕上输出文本内容 | |
more /etc/passwd | 分屏输出文本内容 | |
less /etc/passwd | 分屏输出,并按需加载(适用大文件) | |
head -n 10 /etc/passwd | 是输出文件头10行 | |
tail -n 20 /etc/passwd | 只输出末尾20行 | |
tail -f 文本文件 | 表示通过流的方式,实时查看 | |
string /bin/ls | 查看二进制文件中的可打印字符 | |
文件操作 | cp hello.txt /opt/test | 把hello复制到/opt/test下 |
cp hello.txt /opt/test/hello.cp | 把hello复制到/opt/test下并重命名为hello.cp | |
mv hello.txt /opt/test | 把hello剪切到/opt/test下 | |
mv hello.txt /opt/test/hello.mv | 把hello剪切到test下并重命名为hello.mv | |
mv hello.txt hello2.txt | 重命名 | |
rm hello.txt | 删除文件 | |
rm -f hello.txt | 强制删除文件 | |
du -sk hello.txt | 查看文件大小,以KB的方式 | |
链接 | ln -s hello.txt shello | 软链接 |
ln -d hello.txt dhello | 硬链接 |
2、文件夹操作
功能项 | 命令或格式 | 作用 |
---|---|---|
ls/tree | ls [option] [file/directory] | 显示指定目录下的所有文件或文件夹(dir) |
ls | 显示当前目录内容 | |
ls -l | 显示当前目录详细内容 | |
ls -a | 显示所有文件,包括隐藏文件 | |
ls *.txt | 显示txt后缀的文件 | |
ls /opt/training | 显示目录 /opt/training下的内容 | |
ls -R /opt/ | 列出所有/opt目录下及子目录的内容 | |
tree /opt | 用树状结构显示目录及文件 | |
pwd | pwd | 显示当前所在目录 |
cd | cd directory | 切换到指定目录 |
cd | 切换到当前用户所有的主目录 | |
cd … | 回退到上一级目录 | |
cd /opt/learn | 用绝对路径切换 | |
cd …/…/ | 切换到上上级目录 | |
cd . | 切换到当前目录 | |
cd ~ | 切换到当前目录的家目录 | |
mkdir | mkdir [option] [directory] | 创建目录 |
mkdir /opt/learn/other | 创建other目录 | |
mkdir 1 2 3 | 同时创建1 2 3三个目录 | |
mkdir -p /1/2/3 | 创建三层目录 | |
rmdir | rmdir 1 | 删除一个空目录 |
其他操作 | cp -r /opt/learn /opt/learn2 | 拷贝文件夹 |
mv /opt/learn2 /opt/learn3 | 重命名文件 | |
rm -rf /opt/learn3 | 强制删除文件夹 |
- 创建隐藏文件文件名前加上一个“.”
十、用户与用户组及权限
在Linux中,root具有最高权限,所有权限对root无效。在正式的生产环境的情况下使用普通账户,避免出现安全问题。
1、用户和用户组
功能项 | 命令实例 | 作用 |
---|---|---|
查询 | cat /etc/passwd | 查询用户及组 |
用户组 | groupadd test | 添加一个新的用户组test |
cat /etc/group | 查看组是否呗添加成功 | |
groupmod -n testing test | 重命名成testing | |
groupdel test | 删除组test | |
groups root | 查看用户root在哪个组 | |
useradd | useradd darkid | 新增一个darkid的用户,并新增一个darkid的组 |
useradd -g test denny | 新增一个denny的用户并加入test组 | |
useradd -g test -G dev marry | 新增marry用户,其主组为test,并附加到dev组 | |
usermod | usermod -g dev darkid | 将darkid换到dev组 |
usermod -G 502 darkid | 将darkid附加到gid为502的组 | |
usermod -d /home/temp/mary | 将mary的主目录/home/mary改到/home/temp | |
userdel | userdel darkid | 删除用户darkid |
userdel -f darkid | 强制删除darkid用户 | |
userdel -r darkid | 删除darkid用户及其家目录 |
【注意】:
- 针对一切数据,增删改查都是基本操作(CRUD)。
2、文件及文件夹权限
- 解读
第一个字母:-代表普通文件,d代表目录,l代表链接
第2,3,4:代表当前文件文件夹拥有者的权限(owner),用u表示
第5,6,7:代表当前文件文件夹所属用户组(group)的权限,用g表示
第8,9,10:代表其他用户和其他用户组(other)的权限,用o表示
权限的表示方法:
r读:用4表示
w写:用2表示
x执行:用1表示
功能项 | 命令实例 | 作用 |
---|---|---|
chmod | chmod [权限] [文件或文件目录] | 更改文件或目录权限 |
ls -l hello.txt | 查看文件详细属性 | |
左边10位中第一位代表文件类型 | d-----代表目录 - -----代表普通文件 l-----代表链接文件 | |
左边10位中后9位代表权限 | 前三位代表所有者权限(u),中间三位代表所在组权限(g),后三位代表其他组权限(o),三种角色权限(a) | |
权限rwx的意义 | 权限r或者4 — 表示可读 权限w或2 ---- 代表可写 权限x或者1 — 表示可执行 | |
chmod u+x hello.txt | 为hello所有者添加执行权限 | |
chmod 777 hello | 将hello权限设置为rwxrwxrwx | |
chmod a+x hello | 为三种角色添加执行权限 | |
chmod a-x hello | 为三种角色去除执行权限 | |
chmod -R 777 /opt | 为目录opt下所有文件及子文件添加满权限 | |
chown | chown mary hello | 将helllo文件所有者改为mary |
chown mary /opt/test | 将目录/opt/test改为mary所有 | |
chown -R mary /opt/test | 将目录/opt/test下所有目录都改为mary所有 | |
chgrp | chgrp test hello | 将hello所在组改为test |
chgrp test /opt/test | 将目录/opt/test所在组改为test | |
chgrp -R test /opt/test | 将目录/opt/test下所有子目录和文件所在组改为mary | |
passwd | passwd mary | 修改mary的密码 |
shadow | cat /etc/shadow | 查看shadow文件,保存来用户密码,只有root可以查看 |
十一、文件查找
1、文件查找
功能项 | 命令实例 | 作用 |
---|---|---|
find | find 起始目录 查找类型 查找条件 | 查找起始目录及所有子目录下的文件及文件夹 |
find ./ -name “hello” | 查找当前目录下文件名为hello的文件和文件夹 | |
find /home -name “bash” | 查找home目录下文件名包含bash的文件和文件夹 | |
find ./ -name “*” | 查找当前目录下所有文件 | |
find ./ -name “[h]*” | 查找目录下h开头的文件和文件夹 | |
find ./ -name ‘\\’ | 查找目录下特殊字符\的文件(注意用单引号) | |
find ./ -name “he?lo” | ?代表任意字符 | |
find ./ -name “[^]” | ^代表黑名单 | |
find ./ -name “hello*” | xargs ls -l | 查找并执行命令 | |
find ./ -name “hello*” | xargs cat | 查找并执行命令 | |
… | 等等其他匹配方法,要用时候去搜 |
2、内容查找
功能项 | 命令实例 | 作用 |
---|---|---|
grep | grep [选项] 匹配模式 目标文件 | 基于对目标文件内容的查找 |
grep “root” /etc/passwd | 查找/etc/passwd文件中包含root的行 | |
grep -n “root” /etc/passwd | 查找/etc/passwd文件中包含root的行并输出行号 | |
grep -v “内容” | 排除内容两个字 | |
grep -r game /etc | 在etc目录下查找所有包含game的文件 | |
grep与find结合 | find ./ -name “*” | xarg grep word | 遍历某个目录下所有文件中包含word的文件 |
wc | wc -l | 统计 |
十二、文件归档和压缩
功能项 | 命令实例 | 作用 |
---|---|---|
tar/gzip | tar -cvf hello.tar hello.txt | 将hello.txt归档命名成hello.tar |
tar -cvf test.tar /opt/test | 将目录/opt/test归档命名成test.tar | |
tar -tf test.tar | 将归档文件test.tar中的文件显示出来 | |
tar -xvf test.tar | 提取归档中的内容 | |
gzip hello.tar | 将归档文件hello.tar压缩成hello.tar.gz | |
gzip -d hello.tar.gz | 解压缩文件成hello.tar | |
***常用 | tar -zcvf hello.tar.gz hello.txt | 将hello.txt归档压缩成hello.tar.gz |
***常用 | tar -zxvf hello.tar.gz | 解压缩 |
zip/unzip | zip hello.zip hello.txt | 将hello.txt压缩命名成hello.zip |
zip -r test.zip /opt/test | 将/opt/test目录压缩 | |
unzip -v hello.zip | 查看hello.zip中文件信息 | |
unzip hello.zip | 解压缩 |
十三、进程与服务管理
进程:操作系统正在运行的程序。任何进程都拥有进程ID消耗内存和CPU。
服务:通过服务控制直接启动的后台程序。
# windows命令
services.msc
1、进程相关命令
# 查看进程
top # 实时查看进程
top -n 1 # 每秒刷新一次
ps # 当前终端启动的进程
ps -ef 或 ps -aux # 查看当前操作系统的进程信息
ps -aux | grep sbin # 过滤进程中包含sbin的信息
ps aux | sort -k 3 -r | head -n 6 # 取出消耗cpu前五的进程
kill # 结束进程
kill 2175 # 结束PID为2175的进程
kill -9 PID # 强制结束
2、服务管理与运行
- service:在centos7以前和其他版本中使用
- systemctl:centos7及以后版本,兼容service
# 查看服务状态
service sshd status
systemctl status sshd
# 启动服务
service sshd start
systemctl start sshd
# 停止服务
systemctl stop sshd
service sshd stop
# 重启服务
service sshd restart
systemctl restart sshd
# 自动启动功能
systemctl enable sshd
# 禁止自动启动
systemctl disable sshd
# 查看服务情况
systemctl list-unit-files
# 启动自带防火墙(centos)
systemctl start firewalld
3、Xampp安装
离线安装包
# 执行当前目录下可执行程序
./
# 必须加./ 不然就是去环境变量中找
安装完成后。使用/opt/lampp/lampp start 启动三个服务 apache mysql proftp
第一次会报错,修改vi /opt/lampp/lampp 将2.2.5改为2.8.0再次启动
又可能报错netstat命令找不到
安装net-tools
yum install net-tools
# 关闭防火墙
systemctl stop firewalld
十四、在Linux中安装应用
1、使用rpm离线安装
先下载到本地,以rpm文件名结尾,下载完成后安装
# 查询是否安装mysql
rpm -qa | grep mysql
# 安装命令
rpm -ivh xxx.rpm
# 卸载
rpm -e xxx
2、源码安装
比较适合专业人员,并不需要安装人员看懂源码
- 安装过程:
解压后去源码目录寻找以下几个文件:configure setup.sh install.sh
./configure
make
make install
- 需要安装编译器
yum install cc
yum install gcc
3、yum安装
yum自动下载,自动安装,自动安装依赖
yum install
yum list #查询本机安装的包
-y #自动选择yse
yum search mysql #搜索可用的包
yum repolist #列出源库列表
yum deplist curl #查看应用程序的依赖
yum clear all # 清空缓存的镜像列表
yum makechace # 根据配置文件重新构建缓存
yum erase/remove wget # 卸载
yum update # 更新
4、debian体系安装
apt # 优先考虑
apt-get
# 更新源的方式
1、cd /etc/apt
2、cp sources.list sources.list.bak
3、sudo vi /etc/apt/sources.list 添加更新源
4、apt-get updat
十五、网络相关命令
1、ping命令
ping baidu.com # icmp协议
-c 200 # 发送几个数据包
-f # 压力测试 快速发送
-s 1024 # icmp数据包大小
2、ip命令
ip addr
ip a
arp -an #查看相邻arp协议
ip neigh #查看相邻
ifconfig
ifconfig -a #显示所有
ifconfig -s
ip link #查看网卡mac地址
# 临时为ens33添加/删除ip地址(增加一个)
ip addr add 192.168.0.12/24 dev ens33
ip addr del 192.168.0.12/24 dev ens33
systemctl restart network 后会消失
# 临时修改ip地址
ifconfig ens33 192.168.1.13
#查看路由
ip route
route
netstat -r
route -n
#为当前网络添加/删除默认路由(网关)
ip route add default via 192.168.1.1
route add default gw 192.168.0.1
ip route del default via 192.168.1.1
route del default gw 192.168.0.1
#刷新路由表
ip route flush cache
#启动/关闭网卡
ip link set ens33 up
ifconfig ens33 up/down
#查看端口情况
ss -anl === netstat -ano
3、traceroute命令
linux:
traceroute www.baidu.com # 跟踪路由节点
Windows:
tracert www.baidu.com # 跟踪路由节点
4、curl命令
# 处理http请求
curl http://www.baidu.com
curl -o 1.html http://www.baidu.com 访问并保存
5、wget命令
# 下载文件
wget url
-O 1.txt 保存文件
-c 断点续传(下载大文件)
-b 后台下载