Bootstrap

Linux操作系统

Linux操作系统

一、概述

1、基本功能

  • 进程和线程管理
  • 存储管理
  • 文件管理
  • 设备管理
  • 用户接口

用户和机器之间的接口

2、操作系统层次

  • 内核(Kernel)
    • 壳(shell)
      • 应用程序(APP)

二、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、文件系统类型

文件系统最大文件名长度最大文件大小最大分区大小
ext4255B16TB1EB
xfs255B8EB8EB

3、Linux根目录说明

命令实例作用
/表示根目录,绝对路径
./表示当前目录,是相对路径
…/表示上一级目录,相对路径
/rootroot用户主目录
/home/username存放普通用户的的个人配置文件
/bin存放Linux常用命令
/boot存放系统启动时要用到的文件
/dev外部设备
/etc存放系统管理用到的配置文件和子目录
/user/sbin存放管理员的系统管理程序
/lib系统的动态链接库,通常是.so结尾,类似Windows的.dll
/lost+found异常错误
/mnt临时设备挂在目录
/proc存在系统内存中的信息
/usr用户应用程序和文件存放的目录
/tmp临时文件目录
/optoptional 可选目录,默认是空的,用户使用
/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:3011:30重启
shutdown -r +1等一分钟重启
halt关机
shutdown -h now立即关机
shutdown -h 11:3011: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/treels [option] [file/directory]显示指定目录下的所有文件或文件夹(dir)
ls显示当前目录内容
ls -l显示当前目录详细内容
ls -a显示所有文件,包括隐藏文件
ls *.txt显示txt后缀的文件
ls /opt/training显示目录 /opt/training下的内容
ls -R /opt/列出所有/opt目录下及子目录的内容
tree /opt用树状结构显示目录及文件
pwdpwd显示当前所在目录
cdcd directory切换到指定目录
cd切换到当前用户所有的主目录
cd …回退到上一级目录
cd /opt/learn用绝对路径切换
cd …/…/切换到上上级目录
cd .切换到当前目录
cd ~切换到当前目录的家目录
mkdirmkdir [option] [directory]创建目录
mkdir /opt/learn/other创建other目录
mkdir 1 2 3同时创建1 2 3三个目录
mkdir -p /1/2/3创建三层目录
rmdirrmdir 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在哪个组
useradduseradd darkid新增一个darkid的用户,并新增一个darkid的组
useradd -g test denny新增一个denny的用户并加入test组
useradd -g test -G dev marry新增marry用户,其主组为test,并附加到dev组
usermodusermod -g dev darkid将darkid换到dev组
usermod -G 502 darkid将darkid附加到gid为502的组
usermod -d /home/temp/mary将mary的主目录/home/mary改到/home/temp
userdeluserdel 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表示

功能项命令实例作用
chmodchmod [权限] [文件或文件目录]更改文件或目录权限
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下所有文件及子文件添加满权限
chownchown mary hello将helllo文件所有者改为mary
chown mary /opt/test将目录/opt/test改为mary所有
chown -R mary /opt/test将目录/opt/test下所有目录都改为mary所有
chgrpchgrp test hello将hello所在组改为test
chgrp test /opt/test将目录/opt/test所在组改为test
chgrp -R test /opt/test将目录/opt/test下所有子目录和文件所在组改为mary
passwdpasswd mary修改mary的密码
shadowcat /etc/shadow查看shadow文件,保存来用户密码,只有root可以查看

十一、文件查找

1、文件查找

功能项命令实例作用
findfind 起始目录 查找类型 查找条件查找起始目录及所有子目录下的文件及文件夹
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、内容查找

功能项命令实例作用
grepgrep [选项] 匹配模式 目标文件基于对目标文件内容的查找
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的文件
wcwc -l统计

十二、文件归档和压缩

功能项命令实例作用
tar/gziptar -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/unzipzip 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 后台下载
;