Linux基础

学习要学会实操,总结,分享~

文章目录

    • shell 基础
    • 一、linux基础信息
      • 配置ip
      • 注意事项
      • 了解linux的目录结构
      • 查看系统信息
    • 二、最基本的常见的命令
      • 查看资源、磁盘使用情况
      • 系统关机
    • 三、目录命令
      • 管道和重定向
      • sed
      • awk
    • 四、文件操作
      • 文件系统
      • 文件基本操作命令
        • 查看文件内容的几种方式
      • 文件基本权限
        • 1、权限对文件的作用
        • 2、权限对目录的作用
        • 权限修改
        • 修改所有者命令
        • 文件打包与压缩
        • ACL
    • 五、用户管理
      • 单个用户
      • 组用户
      • 如何添加sudo权限
      • 文件权限
    • 六、 搜索命令
    • 七、文本编辑器vim
    • 八、软链接和硬链接
    • 九、软件包安装
      • 1、RPM包安装
      • 2、yum安装
    • 磁盘
      • 磁盘分区
      • 文件挂载
    • 软件管理
    • 日志管理
    • 其他
    • 面试应用:

操作系统是控制硬件和支持软件运行的计算机程序,只有安装了操作系统计算机才能正常运行使用。

shell 基础

定义数组:()用来定义数组,用空格分开。
a=(1 2 3 4 5)
获取内容: / a [ / ∗ ] 或 / {a[/*]} 或/ a[/]/{a[@]}
获取长度:echo ${#a[*]}

Linux基础_第1张图片

特殊符号的使用:

  • 双引号用于括起一段字符串值,支持$var形式的变量替换
  • 单引号也表示其内容是字符串值,不支持转义
  • \反斜线在某些情况下表示转义。
  • $(ls) 表示执行ls后的结果。与 反引号 ’ ’ 类似,不过可以嵌套。
  • 反引号用法比较独特,代表命令的输出。
  • / ( ( ) ) 对变量进行操作。比如 / (())对变量进行操作。比如 / (())对变量进行操作。比如/((a+b))
  • (())是整数扩展。把里面的变量当作整数去处理。
  • ({1…10})等价于seq1 10。表示1到10。

一、linux基础信息

shell 就是壳,一个程序,作用:命令解释器
Linux基础_第2张图片

linux中,所有的文件都是在根目录下:
Linux基础_第3张图片

配置ip

centos 7 以后可以直接通过图形化界面直接配置。

命令:setup

通过setup工具设置ip地址。注意激活onboot=yes,即值为*号。若没有配置onboot则会导致ifconfig无法显示网卡.

远程linux系统的工具:xshell,putty,SecureCRT

安装linux系统后,通过ls出现的三个安装日志文件:
1、/root/install.log :存储了安装在系统中的软件包及版本信息
2、/root/install.log.syslog:存储了安装过程留下的事件记录
3、/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息

注意事项

1.linux严格区分大小写
2.linux下一切皆文件
3.linux不靠扩展名区分文件类型(根据习惯来说,能拓展名区分的,就写扩展名更好明确文件类型,例如:.gz 、.zip、.tgz等);程序文件:shell脚本一般用.sh结尾;c语言文件一般用.c结尾等;网页文件也最好些扩展名。如:.html 、 .php等
4.linux中所有的存储设备都必须在挂载之后才能使用 。
5.windows下的程序不能直接在linux中使用

了解linux的目录结构

目录名 目录的作用
/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行,是/usr/bin/目录的软链接
/sbin/ 存放系统命令的目录,只有超级用户才可以执行,是/usr/sbin/目录的软链接
/usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行
/usr/sbin/ 存放系统命令的目录,只有超级用户才可以执行
/boot/ 系统启动目录,保存与系统启动相关的文件,如内核文件,启动引导程序等
/dev/ 设备文件保存位置
/etc/ 配置文件保存的位置。系统内所有采用默认安装的服务配置文件保存在这。如用户信息,服务的启动脚本 等
/home/ 普通用户的家目录。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的家目录,所有普通用户的宿主目录就是在home目录下建一个用户名相同的目录,如user1的家目录是/home/user1/
/lib/ 系统调用的函数库保存位置。
/lib64 / 64位函数库保存的位置
/lost+found / 当系统意外崩溃或者以外关机,产生的一些文件碎片放在这里。当系统启动的过程中fsck根据会检查这,并且修复已经损坏的文件系统。这个目录只在每个分区中出现,例如:/lost+found就是根分区的备份恢复目录
/media/ 空目录,原来挂载光盘 /软盘
/misc/ 空目录,用来挂载NFS访问的共享目录
/mnt/ 空目录,用来挂载目录的,额外的设备如u盘,移动硬盘等。 推荐:一般所有的挂载操作都是在/mnt下新建个目录挂载
/opt/ 第三方安装的软件保存的位置,目前开发一般是装在/usr/local/下
/proc/ 虚拟文件系统。目录中的数据不包吃在硬盘中,而是在内存中。主要保存系统的内核、远程、外部设备状态和网络状态等。如/proc/devices是保存设备驱动的列表的 ; /proc/net是保存网络协议信息的
/sys/ 虚拟文件系统和 /proc相似
/root/ root的宿主目录,直接在/下;普通用户宿主目录实在/home下
/run/ 系统运行时产生的数据,如ssid,pid等
/srv/ 服务数据目录
/tmp/ 临时目录

查看系统信息

man 命令助手
date 查看时间
date +'%Y-%m-%d %H:%M:%S’以这种格式查看时间
date -s 2020-7-7 22:22:22 设置系统时间为一个具体时间值

uname -m 查看处理器架构
uname -r 查看内核版本

cat /proc/version 查看内核版本
cat /proc/cpuinfo 显示cpu信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 查看内存信息
cat /proc/mounts 显示已加载的文件系统
cat /proc/net/dev 显示网络适配器及统计

查看有几个cpu : cat /proc/cpuinfo | grep physical
查看cpu的核数:cat /proc/cpuinfo | grep processor

查看内存信息:cat /proc/meminfo
查看内核信息:cat /proc/cmdline

hostname 查看主机名

kill PID 关闭进程
kill -9 PID 强制关闭一个进程;查看PID netstat -anp
crtl c也可以关闭进程

只有own和root才有权限结束进程

netstat -anp(a 表示连接中的socket;n代表端口数字 ; p显示建立连接的进程信息)
和grep一起使用 :netstat -anp | grep :80 查看80端口是否被使用
查看端口占用 :lsof -i:8080 (???查不到任何信息? 需要安装才可用:yum install lsof -y)

二、最基本的常见的命令

查看资源、磁盘使用情况

ps (process static)查看进程运行情况
ps aux 查看所有的进程数据
ps -ef 查看进程的状态
ps -ef | grep 'aaa’结合管道符过滤关键内容,可以多次使用 |grep ‘a’ | grep ‘b’

ps -ef 查看进程的父子关系。
Linux基础_第4张图片

ps aux 查看进程的详细信息
Linux基础_第5张图片
父程序复制自己的地址空间(fork),创建一个新的子进程结构

ps -aux --sort -pcpu
根据cpu占用情况来显示进程
Linux基础_第6张图片

ps aux --sort -%cpu ----------------若是要查看内存就是-%mem
按照cpu占用比进行排序

查看某个进程的端口号
1)先查看进程号
ps -ef | grep 进程名
2)查看进程占用的端口号
netstat -nltp | grep 进程PID

netstat -anp
查看所有开放的端口号

netstat -nltp | grep port_number
查看某个具体的端口号情况
在这里插入图片描述

lsof -i:port_number
Linux基础_第7张图片

ps命令主要看静态进程
top主要看动态进程,实时查看。
top -d 3 -p 3029,2938
每隔3秒显式这两个pid的进程信息

top -p port_number
实时查看某个进程的cpu使用情况

kill -9 PID 强制杀死进程
kill -15 pid 正常终止进程

nice -n -5 sleep 7000 &
调整优先级;&表示后台运行

jods 代表查看后台进程

消灭后台进程:kill %进程序号
Linux基础_第8张图片

free 查看内存的情况
df -h 显示已经挂载的分区列表
du -sh dir1 显示目录dir1已经使用的磁盘空间

系统关机

shutdown -h 10:00 定时关机:10点关机
halt \ init 0关机
power off 关机
reboot重启

三、目录命令

cd /home 进入home目录下
Linux基础_第9张图片
ls 查看当前目录信息。只能查看一层目录信息
ls -l 以标准格式显示文件和目录权限等信息
ls -a 显示隐藏文件
pwd查看当前目录路径
clear 清除终端显示内容

mkdir 目录名;创建新的目录

mkdir {dir1,dir2,dir3}
同时创建多个目录
Linux基础_第10张图片
mkdir -p dir1/dir2/dir3 创建一个多层级的目录
rmdir dir1 删除目录
mv adc /tmp/ 将abc文件移到临时文件下

相对路径就是当前的路径,如./;绝对路径就是/下的路径例如:/home/tmp/log

管道和重定向

管道符:|
FD :file discribt 文件描述符,也叫访问文件的标志,即链接文件,省去冗长的绝对路径。
0表示键盘只读;1,2表示终端;3+使文件,可读可写

输出重定向:>
date 1>time.txt 将时间标准输出到time.txt文件。会将原本的内容清空,再写入新的内容
date 1>>time.txt 追加信息,会保留原来的信息

当某条命令产生错误时,才会有错误输出
ls 2>3 2>error.txt 将错误的信息重定向到error输出

‘>>’追加输出 :
head -10 /tmp/log.txt>> /tmp/log.txt
将新增的log内容追加到文件内容中

输入重定向:<

tee管道:三通管道,即交给另一个程序处理,又保存一份副本
cat /etc/passwd | tee file1.txt

通过|xargs成功链接rm命令
cat files.txt | xargs rm -rvf

sed

awk

四、文件操作

文件系统

df -i 查看一个文件能创建多少个inode,inode决定了文件系统中文件的数量。

RAID:廉价磁盘冗余阵列;作用:容错,提升读写速率
RAID1:镜像卷,2块磁盘,容量50%
RAID5:至少三块硬盘,容量

文件基本操作命令

touch用来创建库文件或者修改文件时间
touch file1,file2;
rm -f file 强制删除file1文件
rm -rf dir1 强制递归删除目录及该路文件(不可恢复),也就是删除dir及dir内的所有文件
r表示递归删除; f表示强制删除 ; i 表示交互删除,在删除之前会询问用户
删除

stat 显示文件或文件系统的详细信息
stat file

cp 复制命令
cp 文件a b c /路径 将文件a, b , c 复制一份放到该路径下
cp -r /var/log 新路径 复制/var/log 目录及目录中的文件到新路径下(文件夹一定要加 -r 才能复制成功)
cp -r f1 dir1 /tmp 复制文件及dir目录到/tmp下
cp f1 /tmp/newf1 复制f1到tmp目录下并重命名为newf1
mv 文件a 路径 将文件a移动到某路径下
mv f1 f2 d1 /tmp 将多个文件移到tmp下
mv f1 /tmp/new_f1 移动并重命名
grep ‘文件内容关键字’ /aaa/as 搜索该路径下文件的关键内容 (在文件中命令模式下用 “ / 关键字” 来搜索)
grep ‘root’ -r /var/log 递归搜索“root”
mv 文件a 路径/new1 将文件a移动到某路径下并重命名

文件查找:
1.which:查找命令的位置,直接which+命令;例如:which cat
2.find : 文件查找,针对文件名。find / -name “myfile” 在跟目录下查找名字为myfile的文件

按照文件名查找文件:
find / -name “myfile”

按照目录深度查找权限:
find / -maxdepth 3 -a -name “myfile”
Linux基础_第11张图片
按照文件大小查看:
find / -size 5M

按照文件的属主、属组查找:
find / -user pengqi
find / -group peng

在这里插入图片描述

按照文件类型查找:
find / -type l
l代表软链接
d代表文件夹
f代表普通文件

Linux基础_第12张图片
按照权限查找
find ./ -perm 777 -ls
-ls是精确权限

find ./ -perm 777 -delete
找到文件后删除

find / -name “peng” -ok cp -rvf {} /tmp ;
在根目录下查找文件名为peng的问津,并且将其复制到、tmp目录下
ok是连接符;{}是引用find的内容;\;是结束标志;

find / -user root 搜索属于用户root的文件和目录
find /tmp -name “*.bin” 搜索已bin结尾的文件
复制文件file1到临时目录下,并重命名:cp file1 /tmp/file2

查看文件内容的几种方式

cat 查看文件内容-------不适合查看大文件,
-A 几个选项的集合,用于显示所有的文件内容及特殊字符 ;-n表示显示行号;-v列出特殊字符:例如回车会显示为$

从第一行开始查看文件file1的内容(适合短文件)

tac file1 :直接从文件最后的内容显示

more 分屏显示文件,上下翻页查看
空格向下翻页; b向上翻页

less也是分页显示,道理同more,但是操作方便,可以通过上下键翻页(支持查看长文件)

head显示文件头几行:
head -n 20 file11; 也可以写成 head -20 file11;
显示前20行内容 。默认显示前10行。

tail显示文件后几行,默认后十行
tail -n 20 file22 ; 也可以写成 tail -20 file22;
显示文件末尾20行
tail -f /log/message:
-f表示监听文件新增的内容,例如一个窗口修改内容,另一个窗口能实时同步到修改的信息。

文件基本权限

Linux基础_第13张图片
lrwxrwxrwx.1 root root 7 Dec 12 18:38 bin->usr/bin
软链接 权限 所属主 所属组

  • rwx rwx rwx. (r:read ; w:write ; x :excute)
    第一位表示文件类型,其中常见的 : d表示目录,- 表示普通文件 , l 表示软链接
    第一个rwx三位表示的是user所有者的权限
    第二个rwx表示的是group组用户权限
    第三个rwx表示的是others其他用户权限

.表示是这个文件是受SElinux(美国安全局)所保护的

权限解释:
x:文件的执行权限
例如写一个简单的程序,然后通过./文件名就能执行
Linux基础_第14张图片

Linux基础_第15张图片

1、权限对文件的作用

读:表示可以读取文件的数据。即可以对文件执行cat,more,less head ,tail等文件查看命令

写:可以对文件内容进行修改。即可以对文件执行vim,echo等修改文数据的命令。
注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。原因:该文件名对于上级目录来说就是他的数据,如果有写的权限,那么它就可以对自己的文件内容进行增加,删除操作。

执行:可以对文件进行执行,运行。Linux中,只要文件有执行权限,那这个就是执行文件。对文件来说,执行权限是最高的权限。

2、权限对目录的作用

读:表示可以查看目录下的内容,执行ls命令查看

写:可以对目录内容进行修改,新增,删除,赋复制,剪切。可以执行touch ,rm,cp,mv命令。对目录来说写是最高的权限。

执行:目录不能运行,对目录来说执行权限表示可以进入目录。可以通过cd进入目录。

目录只有3个权限:
0:没有任何权限
5:只有读和执行权限
7:最高权限,读写执行

umask默认权限:
创建文件或是目录时,系统赋予的默认权限

文件的默认最大权限是666,而umask值是022
目录的默认最大权限是777,而umask值是022.

权限修改

1.通过+增加权限,-取消权限
chmod u+x test
chmod u-x,g-w test

2.通过数字更改权限 :4代表r读;2 代表w写 ; 1代表x执行权限
chmod 777 test #最大权限,一般没有这么大的权限
chmod 755 test

修改所有者命令

chown user1 bcd #修改文件所有者
chown root:group test #chown可以同时修改所有者和所属组
修改所属组的第二种方法:chown . 组名 文件名
Linux基础_第16张图片
修改权限时,想要该目录下的所有文件权限都变更,可以使用-R
Linux基础_第17张图片

chgrp 修改所属组

注意:普通用户可以修改所有者是自己的文件的权限;但是普通用户不能修改文件的所有者,只有超级用户才能修改。

文件打包与压缩

tar -cvf /tmp/peng.tar peng
将peng文件打包为peng.tar保存到tmp路径下

tar -xvf peng.tar /tmp/yang/

将peng.tar 文件解包到tmp/yang路径下

bzip2 file1 压缩file1文件
bunzip2 file1.bz2 解压文件

gzip file1
gunzip file1.gz解压

打包文件:
tar -cvf ab.tar a b 将ab文件打包在一起
tar -tvf ab.tar 查看包的内容
tar -xvf ab.tar 解包
tar -xvf ab.tar -c /tmp/ 将ab包解压到tmp下

打包压缩的两种方式:
bzip2方式,用参数j:
tar -cvfj b.tar.bzip2 b
tar -xvfj b.tar.bzip2

gzip打包,用参数z:
tar -cvfz a.tar.gz file1
tar -xvfz a.tar.gz

zip压缩包
zip file1.zip file1 多个文件目录加参数-r循环递归
unzip file1.zip

一般用于文件安装包或项目文件解压

ACL

access control list 限制用户对文件的访问。是上面UGO的补充。UGO是针对同一个用户、一个组和其他人的操作;ACL是对不同用户设置不同的基本权限。对象的数量不同。

getfacl 路径 #查看文件的权限
Linux基础_第18张图片

setfacl -m u:用户名:rwx 文件路径
设置文件访问控制(set file acl )
Linux基础_第19张图片

setfacl -x u:用户名 文件路径
删除文件的某个用户的权限

特殊点:设置其他用户的权限:setfacl -x o::rwx 文件路径

watch -nl ‘ls -l 文件路径’
每个1s会刷新最新的文件权限状态

suid是针对文件所设置的一个特别的权限
功能:使正在登录的调用文件的用户,临时具备属主的能力。

给cat提权后,所有的普通用户都可以访问
chmod u+s /usr/bin/cat

chattr -i file11 设置文件权限只读,并且所有的用户对该文件不可随意更改

五、用户管理

1、用户基本信息文件------重点
etc/passwd

内容讲解:
root: x:0:0:root:/root:/bin/bash

root表示此时登录系统的用户名;
x表示密码占位符
0表示UID:用户身份证明
0表示GID:group组号
root表示描述
/root表示家目录:登录系统所在的位置
/bin/bash允许登录shell:命令解释器

拒绝某个用户登录系统:
usermod -s /sbin/nologin user01
直接不允许user01登录shell即可

2、用户密码信息文件
/etc/shadow

3、组信息文件
/etc/group

单个用户

useradd user11

useradd -d user01
在家目录下创建用户user01用户
如果-d无法创建,修改为-m就能正常创建了。ps:在man useradd文档中,会发现,-m可以在系统创建用户主目录,只要主目录下没有存在同样的用户即可创建成功,也有点强制创建的意思。

userdel -r user01
删除user01家目录下所有的内容

查看用户信息:id 用户名
在这里插入图片描述
修改用户密码:passwd
若当前用户是超级用户,修改别人的密码是:passwd 用户名,然后输入新的密码
Linux基础_第20张图片
usermod -g roger jack : 将jack更改为roger组
passwd roger:给roger设置登录密码

组用户

组的类型:基本组和附加组
1.基本组:随用户创建而创建,组名同用户名。
2.附加组:将某个用户放到多个组中,这个其他组就是附加组,一个用户的附加组可以有多个。

组是基于用户来说的!!
例如:user1的基本组是userA,此时将user2加到userA中,此时user A对于user2来说就是附加组。

usermod AAA -g CCC // 将AAA的基本组修改为CCC组
g 是指定基本组
G用于指定附加组。

将AAA添加到DDD组:usermod AAA -G DDD
可以通过具体的附加组查看他的附加用户
Linux基础_第21张图片

groupadd employee
创建组用户的信息在/etc/group下
在这里插入图片描述
创建组net01 并指定设置gid为2000
groupadd net01 -g 2000

删除组:groupdel net01

将user1从附加组hq中删除
gpasswd -d user1 hq
在这里插入图片描述
su和sudo区别
su: 普通用户切换到超级用户权限,可以做某些需要高级权限的操作。此时还是在普通用户下的。使用su需要知道管理员密码,安全性没有保障。
sudo:临时给用户超级管理员的部分权限。sudo能够更好分工,仅仅要配置好/etc/sudoers,这样sudo能够保护系统更安全,并且分工明白,有条不紊。

如何添加sudo权限

测试自己是否有sudo权限?

sudo whoami
运行以上命令,提示出入该用户名密码,若打印root那么表示该用户有sudo权限了

添加sudo权限的方法:
方法一:将用户添加到sudoers文件中,包含定义了这个用户或者用户组被授予了sudo权限,以及权限的级别。

第一种方式:以root身份运行vi soduers ,然后给用户添加权限,最后输入 :wq! 强制保存即可
第二种方式:在sudoers.d下创建一个文件,设置用户权限即可。----------还没搞太懂该怎么设置,文件类型是否有差异,待验证。。。

方法二:将用户添加到sudo用户组(已经在sudoers文件中定义了)。例如centos 7 中是wheel用户组被授予sudo权限。所以只要将用户添加到该用户组即可。

操作:以root或者其他有sudo身份的用户运行:
usermod -aG wheel username
注意:username修改为自己要添加的用户名称。

参见:https://cloud.tencent.com/developer/article/1626786

文件权限

ls 查看当前路径下所有文件
ls -l 查看文件权限
在这里插入图片描述
第一个“-”代表是文件类型rwx:读写执行权限

ls -lh 显示权限
+是权限赋予,—是撤销权限
r 读 ; w 写 ; x 执行
u所有人 ; g群组 ; o其他人

修改权限的三种权限设置:
①chmod u=rwx dir1 给所有人dir1的所有权限
chmod g-wx dir1 针对群组人员删除写和可执行权限
②chmod g+x dir1,针对组,赋予可执行权限
③chmod 777 dir1 给dir1所有人所有权限(r:4 ; w:2 ; x:1)
chown user1 file1 将file1给user1所有者用

chgrp修改组用户
chgrp test file1 将file1修改为test组的文件

chown修改拥有者
chown roger dir1 将dir1的拥有者修改为roger用户
chown roger : roger dir1 将组用户和拥有者同时修改为roger

六、 搜索命令

whereis 搜索系统命令
会显示帮助文档,和二进制命令。

which命令
可以搜到二进制命令的同时,还可以找到别名命令

locate命令:按照文件名搜索普通文件
语法:locate abd 搜索abd文件
优点:按照数据库搜索,搜索速度快,消耗资源小,数据库位置/var/lib/mlocate/mlocate.db
缺点:只能按照文件名搜索文件,不能执行更复杂的搜索,比如按权限,大小修改时间等搜索文件。

find 按照文件名搜索
find / [选项] 搜索关键字
选项:
-name 按名字搜索
-iname 按照文件名搜索,不区分文件名大小写
-inum 通过Inode来搜索
-size 按照文件大小搜索(注意单位)

练习:
find / -name abd
find / -size 210M

按修改时间搜索

。。。待补充

按权限搜索
find 搜索路径 【选项】 搜索内容
选项:
-perm 权限模式:查找文件权限等于权限模式的文件
-perm -权限模式:查找文件权限全部包含权限模式的文件
-perm +权限模式:查找文件权限包含权限模式的任意一个权限的文件

按所有者和所属组搜索
find 搜索路径 【选项】搜索内容
选项:
-user 用户名:通过用户名查找所有者指定用户的文件
-group 组名:
-nouser :查找没有所有者的文件

按照文件类型搜索
find 搜索路径 【选项】 搜索内容
u新安县:
-type d:查找目录
-type f: 查找普通文件
-type l : 查找软链接文件

grep:
grep ‘^a’ 2.txt -n 查找以a开头的内容,并显示行号
Linux基础_第22张图片

find和grep的区别:
find用于系统中搜索符合条件的文件名;不支持管道符使用。主要用于搜索匹配条件的文件。
grep用于在文件中搜索符合条件的字符串,需要模糊查询,可以结合正则表达式进行匹配,搜索时字符串时包含匹配的。

管道符:|
文本流
netstat -an |grep ESTABLISHED |wc -l
查找当前连接的设备并统计

alias别名
例如:alias grep=‘grep --color=auto’
只能临时有效,想要永久生效,需要写入环境变量配置文件:~/.bashrc

whatis ls #查看命令级别的帮助

info 也是帮助命令

七、文本编辑器vim

vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版。vi没有颜色标记,vim有颜色标记,防止修改拼写错误。

Linux基础_第23张图片
1.命令模式:主要使用快捷键的模式

命令 作用
i 在光标所在字符前插入
I 在光标所在行首插入
a 在光标所在字符后插入
A 在光标所在行尾插入
o 在光标下插入新行
O 在光标上插入新行

2.输入模式:主要用于文本编辑和记事本类似。
3.编辑模式:
:w 保存 如果要另存为新文件则是:w 新文件名
:q不保存退出
:wq保存退出 (或者x)
:!强制
:q!强制不保存退出,用于修改文件之后,不保存数据退出。
:wq!强制保存退出。只有root用户或是文件所有者,对文件没有写权限的时候,强制写入数据使用。

实操:
①vi file1 打开file1查看------命令模式
②按i / a / o 进入编辑模式,对文件进行编辑;
③按esc退出编辑模式,进入目录模式
④按:进入底线模式,此时按/关键字,可以进行关键字的搜索
⑤按:%s/123/456/g将123的所有内容替换成456
⑥按:wq 保存退出 q!强制退出 q 退出

打开文件时:dd 删除行 yy复制行 p 黏贴复制的内容 u:撤销

注意:
set nu 设置行号 set nonu 取消行号
*代表0或多个字符 ; .点代表匹配任意字符;?表示匹配1个或者0个字符; ’ ^abc’ 或者 ’ [abc]’ 以abc开头的 ;‘[^abc]’ 才是不以abc开头的文件
g* 以g开头的 date*.txt 以date开头.txt结尾的 date ???.txt 中间有3个任意字符 env 查看环境变量

光标移动:
上下左右移动光标,分别是hjkl
光标移动到文件头gg;移动到文件尾G
光标移动到行首:^ ; 移动到行尾$
指定到某行 :n

dd删除或是剪切整行
ndd:删除或是剪切多行

p粘贴到光标后;P(大写)粘贴到光标前

当在通过vim编辑文件时,由于意外退出,系统会产生一个临时文件,也是隐藏文件。这时候重新打开该文件要编辑的时候,会发现报错,无法编辑。
解决方法: 删除临时文件即可。

多文件同时打开
vim -o abc bcd
-o:两个文件上下分屏显示
-O(大写):两个文件左右分屏显示

通过先按ctrl+w,再按左右箭头在两个文件之间切换

八、软链接和硬链接

ln 在文件之间建立连接

例如:ln abc /tmp/abc1 建立连接,将adb文件链接到tmp目录下

软硬链接的区别:

ln abc /tmp/abc1 建立硬链接,将adb文件链接到tmp目录下

  • 硬链接特征:
    1.源文件和硬链接文件拥有相同的Inode和Block
    2.修改任意一个文件,另一个都会改变(因为Inode相同,所以最后更改的其实都是同一个文件)
    3.删除任意一个文件,另一个也都能使用
    4.硬链接标记不清,很难确认硬链接文件位置,不建议用
    5.硬连接不能链接目录
    6.硬链接不能跨分区

ln -s /etc/cde /tmp/cde2 软链接的源文件一定要写绝对路径

  • 软链接特征:-----跟windwos的快捷方式差不多
    1.软链接和源文件的Inode和Block不同
    2.修改任意一个文件,另一个文件也会改变(Inode虽然不一样,都是软连接的数据最终时指向源文件的Inode,所以最终文件还是只有同一个)
    3.软链接源文件删除,软链接不受影响,只是你访问软链接就访问不到了;反之,删除软链接,源文件不受影响。
    4.软链接没有实际数据,只保存了源文件的Inode,不论源文件多大,软链接都不会变
    5.软链接的权限是最大的权限LRWXRWXRWX,但是由于没有实际数据,最终还是需要参考源文件权限
    6.软链接可以链接目录
    7.软链接可以跨分区
    8.软链接特征明显,建议使用

软链接适用场景:
1、目录层级很深的时候
2、用软链接是为了照顾管理员的使用习惯,可能升级需要,放在了新的位置,但是管理员已经习惯了旧文件位置,此时就很方便了。
硬链接:防止数据被删除。一个删除后,另一个链接还可以访问。

九、软件包安装

linux只有两种包:源码包、二进制包。
如果服务是给大量客户端提供访问的,建议用源码包,源码包效率更高(LAMP)
如果程序是给少量用户访问,或是本地使用的,建议用RPM包,因为管理方便。

1、RPM包安装

rpm -ivh 包全名 #注意一定是包全名。如果跟包全名的命令要注意路径,因为软件包在光盘当中
选项:
-i : install安装
-v : 显示更详细的信息
-h : 打印#显示安装的进度

RPM包安装的apche
1、启动:
1)service httpd restart
2)/etc/rc.d/init.d/httpd start #标准启动方式

2、网页位置
/var/www/html

3、配置文件
/etc/httpd/conf/httpd.conf

rpm包升级和卸载:
1)安装升级:rpm- Uvh 包全名
2)卸载:rpm -e 包名

查询:
1)rpm -q 包名 :查询是否安装
2)rpm -qi 包名 :查询包信息
3)rpm -ql 包名 : 查询软件包中所有的文件列表和软件所安装的目录
4)rpm -qf 系统文件名: 查询系统文件属于哪个包

2、yum安装

yum list
查看yum源服务器上所有可安装的软件包列表

yum list 包名
查找某个包名

yum search 关键字
通过关键字查找相关的软件包

yum install mysql -server
yum remove mysql-server
yum list installed 找出已安装的软件

安装软件:yum -y install 包名
升级软件:yum -y update 包名
在升级时,yum源服务器中软件包的软件要比本机安装的软件包版本高。

卸载指定软件包:yum remove 包名
一般不建议卸载,卸载的东西如果依赖性很强可能导致系统崩溃。

是否可以在系统中安装rpm包的apache,又可以安装源码包的apche?
可以! 因为两种安装方法安装的apche位置不一样,例如:
rpm包默认安装位置:
配置文件:/etc/httpd/conf/httpd.conf
网页位置:/var/www/html
日志位置:/var/log/httpd
启动方法:service httpd restart

源码包:必须指定安装位置(源码包没有安装数据库,没删除命令)
配置文件:/usr/local/apache2/conf/httpd.conf
网页文件:/usr/local/apache2/htdocs/
日志位置:/usr/local/apache2/logs/
启动方法:/usr/local/apache2/bin/pachectl start

磁盘

机械硬盘:传统普通硬盘,主要是由盘片转轴,磁头控制器,数据转换器以及控制电机等其他几部分组成
固态硬盘:用固态电子存储芯片阵列而制成的硬盘

二者区别:传输速度,读取速度,写入速度,以及价格的不同。

磁盘命名:
SATA(串口):

  1. /dev/sda
    /dev设备文件目录; s代表sata接口;a代表第一块硬盘 ; sda就是一个文件
  2. /dev/sdb
    表示第二块磁盘

IDE(并口):/dev/hda ; /dev/hdb

磁盘分区

两种分区表形式:

  • MBR分区表(主引导记录,类似索引表):最大支持2.1TB硬盘,最多支持4个分区
  • GPT分区表(全局唯一标示分区表),支持9.4ZB硬盘,支持的分区数没有限制,但是windwos限制128个主分区

分区的类型:

  • 主分区:最多只能有4个
  • 扩展分区:
    • 最多只能有1个
    • 主分区加扩展分区最多有4个
    • 不能写入数据,只能包含逻辑分区
  • 逻辑分区

磁盘的使用:首先分区------> 格式化 / 文件系统 -------> 挂载mount

怎么给系统添加硬盘?
一般系统默认只有sda硬盘,需要更多的磁盘使用,需要通过手动添加新的硬盘使用,操作见下:直接傻瓜式添加默认下一步操作即可
注意事项:
1.需要在虚拟机关机的情况下才能添加。
2.需要修改默认大小,最好不要默认20G。太大了格式化慢。
Linux基础_第24张图片

1.查看磁盘信息
方式一: ll /dev/sd*
Linux基础_第25张图片

方式二:lsblk
第一块磁盘空间为20G,分割为5个磁盘,大小分别见下
Linux基础_第26张图片
2.创建分区
MBR主引导启动记录(分区)
启动分区根据 fdisk /dev/sdb
Linux基础_第27张图片
1)分区命令1:fdisk /dev/sdx x代表你想要分区的磁盘
2)进入会话模式:按n开始分区,提示分主分区还是扩展分区,选择p;分区编号1-4自己设置;回车进入设置起始扇区,起始扇区其实就是MBR;last,结束扇区;设置扇区大小 +2G;w写入并保存分区信息到linux;
3)partprobe /dev/sdb 刷新分区表
4)查看分区结果:fdisk -l /dev/sdb
Linux基础_第28张图片

3.创建文件系统
mkfs.ext4 /dev/sdb1
新创建的分区都需要格式化才能存数据

4.挂载文件
创建挂载路径:mkdir /mnt/disk1
mount -t ext4 /dev/sdb1 /mnt/disk1

5.查看挂载信息
方法一:df -hT显示磁盘分区信息
Linux基础_第29张图片
逻辑卷LVM
管理磁盘的一种方式;可以随意扩张大小
术语:PV 物理卷;VG卷组;LV逻辑卷
创建LVM
VG管理
LV扩容

swap管理分区:
作用:提升内存的容量,防止内存溢出。
1.先创建一个分区,然后将其改为交换分区类型
fdisk /dev/sdc
Linux基础_第30张图片
2.格式化分区
mkswap /dev/sdc3
3.挂载:swapon /dev/sdc3
4.验证:free -m 查看增加后的交换分区,实际空间变大了
在这里插入图片描述

Linux基础_第31张图片

注意:
在挂载时创建的文件,此时只会显示挂载下创建的文件,若本身挂载路径下有文件不会显示出来。取消挂载后才能看到原始路径下创建的文件。

文件挂载

linux中所有的存储设备都有自己的设备文件名,这些设备文件必须挂载之后才能使用,包括硬盘(自动挂载)、U盘和光盘(需手动挂载)。

挂载其实就是给存储设备分配盘符,linux的盘符其实就是一个已经建立的空目录,即挂载点。把设备文件和挂载点连接的过程叫挂载。

  • 必须分区
    ① / ( 根分区)
    ②swap分区
    - 如果真实内存小于4GB,swap为内存的两倍
    - 如果真实内存大于4GB,swap和内存一致
    - 实验环境,不大于2GB

  • 推荐分区
    ① /boot(启动分区,1GB)---------必要的分区

  • 常用分区
    ① /home (用于文件服务器)
    ② /www(用于web服务器)

格式化是为了写入数据到文件系统

/dev/sdb5 表示:第二块SATA接口硬盘的第一个逻辑分区

软件管理

RPM包管理(Ret hat package manager)
核心配置目录:/etc/yum.repos.d/
操作:
1.删除官方YUM库
2.编写本地YUN配置文件
Linux基础_第32张图片
3.挂载安装光盘
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
挂载完后,在/mnt/cdrom下会有很多rpm包
需注意:光盘一定要处于开启并且上电状态
Linux基础_第33张图片

vi /root/.bashrc
bashrc中的内容,系统开机后会自动执行
Linux基础_第34张图片

4.使用YUM安装和卸载程序
全新安装:yum -y install httpd vsftpd
重新安装:yum -y reinstall httpd
查询http程序:yum list httpd
删除包:yum -y remove +包名

5.模拟客户机访问

RPM安装:
cd /mnt/cdrom/Packages
rpm -ivh wgetxxxx.rpm
i表示install
v表示可视
h表示安装进度百分比

查询:rpm -q wget
卸载:rpm -evh 包名

卸载后再查询,会提示未安装
Linux基础_第35张图片

优缺点:
1.rpm存在包依赖,安装比较麻烦,但是不需要配置!!!;yum会自动安装依赖包
2.RPM包:二进制包,无序编译,直接可以执行使用
3.源码包:需要编译环境才能运行;配置复杂;

源码包管理方法
步 骤:

先准备好编译环境
1.解压包:
useradd www
tar -xvf xxx.tar.gz
cd xxxx
2.配置:
./configure --user=www --group=www --prefix=/usr/local/nginx
3.编译:make
4.安装:make install
然后启动测试
可能存在的问题:
1)安装过httpd服务,直接启动nginx会有冲突,请确保关闭httpd
2)可能无法访问网络,关闭防火墙设置:systemctl stop firewalkd

一次性调度执行at
at now+2min
atq 查询任务
Linux基础_第36张图片

循环调度执行cron
cron table表命令,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

ps aux | grep crond 查看程序是否运行
Linux基础_第37张图片
Linux基础_第38张图片
计划任务存储位置:ls /var/spool/cron/

cron后台常驻程序daemon主要用于:
1.负责文件在网络中的共享
2.管理打印子系统
3.跟踪管理系统信息和错误
4.管理系统日常任务的调度

管理方式:crontab -e 设置任务

job format 语法格式 含义
*/5 * * * * /mysql_bash .sh 任务每5min执行一次
0 2 1,4,6 * * ls -l/var/spool/cron 每月的1,4,6日的2点执行任务
0 2 6-9 * * / ls -l /var/spool/cron 每月的6-9日的2点执行任务
* * * * * (分,时,日,月,年) 时时刻刻都在执行的任务
0 * * * * 每小时的0分整执行任务
0 2 * * * (也可以写成00 02 * * *) 每天的2点整执行任务
0 2 14 * * (也可以写成00 02 14 * *) 每月的14号2点执行任务
0 2 ** 5 每周5的2点执行(不写月日时,仅周生效 )
0 2 2 6 5 每周五,并且6月2号的2点执行

日志管理

1.日志进程rsyslog

常见日志文件(系统,进程,应用程序)
tail -10 /var/log/messages 系统日志文件
tail -f /var/log/secure 查看时时的安全相关log
tail - f /var/log/yum.log查看yum安装的log
tail -f /var/log/dmesg 查看和系统启动相关的log

rsyslogd配置:
1) 安装相关程序,一般默认安装了 :yum install rsyslog logrotate
2)启动程序 systemctl start rsyslog.service
3)查询软件包的安装情况 rpm -q rsyslog
重点:/etc/rsyslog.conf 主配置文件(程序,log级别,文件位置)
/etc/sysconfig/rsyslog
/etc/logrotate/log

log_info标准的log信息

修改配置文件后,绝对不能重启服务器,直接更新配置即可
kill -1 PID 重新加载程序

想要修改默认的程序产生的文件,在etc/rsyslog.conf的rule下修改路径即可
Linux基础_第39张图片

2.日志轮转logrotate

日志轮转指的是记录最后一段时间发生的事。原因:磁盘空间有限!
主文件路径:/etc/logrotate.conf(决定每个日志文件如何轮转)

主配置文件介绍:
Linux基础_第40张图片

log日志的设置:
vi /etc/logrotate.d/yum
根据需要设置以下配置
Linux基础_第41张图片

其他

查看ip :ifconfig
ip -4 addr
ip -6 addr 查看ipv6地址

service network start 启动网卡
service network stop 禁用网卡

service mysqld status 查看数据库状态

putty远程连接虚拟机的根据; winscap:连接windwos和linux的工具。

面试应用:

1.获取20s内某个进程每秒内存百分比占用数据,并算出平均值

for i in $(seq 20); do ps -o %mem -p 1 |tail -l;sleep 1;done |awk '{t+=$1;print $1,t/NR}'

Linux基础_第42张图片

2.利用top获取某个进程的cpu和内存,并打印平均值

top b -d 1 n 5 -p 2649 |awk '{cpu+=$9;men+=$10}{print $9,cpu/NR,$10,mem/NR}'

Linux基础_第43张图片

数据监控数据可视化:
gnuplot命令
Linux基础_第44张图片

你可能感兴趣的:(笔记,linux,服务器,运维)