视频课程老师博客:
http://oldboy.blog.51cto.com
https://www.oldboyedu.com/
linux操作系统镜像下载地址:
https://www.centos.org/ -----centos的官网
https://mirrors.aliyun.com/ ----阿里云下载
==============================一、 Linux操作系统的安装配置、调优及安全设置===============================================
1 安装centoslinux系统:
安装详细过程请百度搜索。
linux在虚拟机上安装centos6.7系统分区的基本要求:
1)要至少有一个根(/)分区,用来存放系统文件及程序。其大小至少在5GB以上,平时自己安装使用创建的文件的都在该目录下。
2)要有一个swap(交换)分区,它的作用相当于windows里的虚拟内存,swap分区的大小一般为物理内存为8G或小于8G,分区配置8G。但当系统物理内存大于8GB时,则swap分区配置8~16GB即可,太大无用,浪费磁盘空间。
3)/boot分区,这是Linux系统的引导分区,用于存放系统引导文件,如Linux内核等。该分区推荐可以设置512MB,最低空间可以设置成256MB。这个分区也是必须的。
系统分区详解:
硬盘使用前----进行分区-------格式化(创建文件系统)------存放数据
类似于:房子使用前-----进行隔断----装修,买家具--------住人
一块硬盘分区:
主分区、扩展分区、逻辑分区
主分区+扩展分区的数量<=4,其中一个主分区可以用一个扩展分区替换,扩展分区最多只能一个或者没有。
扩展分区不能直接使用,还需要再上面创建逻辑分区,逻辑分区可有多个。
主分区+扩展分区 编号只能1-4,逻辑分区的编号只能从5开始。
(1)常规分区:
/boot 主分区(引导分区)。
swap 交换分区 物理内存小于8G就分8G,物理内存8G,就分8G-16G.
/ 根分区,Linux所有目录顶点 剩余所有空间。
(2)数据重要(数据库、存储服务器):
/boot 主分区(引导分区)。
swap 交换分区 物理内存小于8G就分8G,物理内存8G,就分8G-16G。
/ 根分区,Linux所有目录顶点,100-200G。
/data 存放数据,其他所有空间。
(3)特大网站,门户(产品线特别多,需求,如淘宝等大型网站):
/boot 主分区(引导分区) 。
swap 交换分区 物理内存小于8G就分8G,物理内存8G,就分8G-16G。
/ 根分区,Linux所有目录顶点,100-200G。
剩余空间不分配,哪个部门领到服务器,根据需求再进行分区。
磁盘分区命名及编号方式
(1)以设备名命名
在Linux系统中,磁盘设备对应与系统中的特殊文件,这些特殊目录中,不同的设备对应的设备名称如下:
(2)使用数字编号
为了表示不同的分区,通常会用数字进行编号。
需要注意的是,在对分区编号时,数字1-4只能留给主分区或扩展分区使用,逻辑分区(是在扩展分区基础上的)编号只能从5开始。
在对Linux系统设置了分区之后,还要在分区上创建文件系统(格式化)才能安装系统,这个在安装时由系统自行完成创建。
2配置网卡
1)在Linux命令行输入setup 回车进入配置网卡界面;
2)操作如下
整个配置过程依次为:执行setup命令→network configuration→device configuration→eth0→配置完依次点击“OK”→“save”→save&quit→quit,这样就退出到命令行界面了,
最后在输入ifup eth0启动网卡即可,该配置实质就是修改网卡的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0内容。
查看ip地址:ifconfig
用本地cmd去ping虚拟机IP拼通即可。
查看网卡配置:cat /etc/sysconfig/network-scripts/ifcfg-eth0
注:网卡配置中的ONBOOT=no,每次重启电脑或开机需要通过ifup eth0来重启网卡,所以需要改为yes。
3. 安装完成Linux后调优及安全设置
3.1关闭SELinux功能
SELinux是美国国家安全局对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里还是把他关闭了。至于安全问题后面通过其他手段来解决,这也是大多数生产环境
的做法。如果非要开启也是可以的,但是这里我们把它关闭。
更改之前可先把之前的文件进行备份
cp /etc/selinux/config /etc/selinux/config.ori -------------同目录下备份config文件,后面的是备份路径
更改SELinux的状态方法1:
输入vi /etc/selinux/config ,输入 i 光标移入enforcing,把enforcing改成disabled。按“esc”退出输入。然后直接输入 : wq 回车,进行保存。(若是不保存输入 :q!回车直接退出)
更改SELinux的状态方法2:
注意!!!
上图已经把文件中的SELinux已经改成disabled了,一般更改文件后需要重启服务器才会生效,所以即使文件中已经改成功了,系统中还是没有生效。但是一般工作中的Linux服务器的服务多,使用比较多,重启太慢,影响正常使用,所以最好不要重启,可以用setenforce设置SELinux的方法把系统中未生效的信息设置成permissive(与disabled状态相同都有关闭的意思),重启后disabled生效。
3.2 关闭防火墙
/etc/init.d/iptables stop -------临时关闭防火墙,重启服务器防火墙会重新打开
/etc/init.d/iptables status ---------查看防火墙的状态
chkconfig iptables off --------永久关闭防火墙,重启电脑也不开
4.隐藏Linux版本信息
在登录到Linux主机本地(非CRT连接的窗口)前,会显示系统的版本及内核信息。防止版本信息暴露,可通过该版本的漏洞攻击服务器。为了保险起见,可通过下列命令。如下图:
cat /etc/issue 或者 cat /etc/issue.net ---------查看系统版本和内核信息
> /etc/issue 或者 > /etc/issue.net ---------------清空文件中的版本信息和内核信息(不要删除文件,删除文件可能导致故障,清空文件的内容可能不会产生故障。)
5 系统的运行级别及作用
把系统的不同状态(级别)用数字表示。
cat /etc/inittab ------查询系统运行的级别(1-6 七种级别模式)(只能查看不能修改系统的运行级别)
runlevel ------查看当前运行级别
最常见的切换运行级别:
init 0 -------- 关机
shutdown -h now --------关机
halt --------关机
init 6 ----------重启
reboot ------重启
shutdown -r now ----------重启
0 表示 “Linux关机了”。
1 表示 “单用户状态 ,Linux系统出问题了,维护时需要使用单用户(如:系统用户root密码丢了,需要找回)”
2 表示 “没有NFS(网络文件系统)的多用户模式(Linux可同时很多用户远程连接)”
3 表示 “完整的多用户模式(当前我们使用的命令行的模式),工作中常用的级别”
4 表示 “ 暂时保留的 ”
5 表示 “桌面模式”
6 表示 “重启模式”
=======================================二、Linux客户机远程服务(器)故障排查思路==================================
1.客户端连Linux服务器连不上可能原因
ping 192.168.121.23 (客户机拼服务器的地址)
不通可能原因: ip拼的不对;网线松动;防火墙未关。
2.本地电脑连服务器上的服务
/etc/init.d/iptables stop ----------阻挡防火墙开通(关闭防火墙)
netstat -lntup|grep 22 (等于netstat -lntup|grep sshd ) ------查看端口是否开放(以ssh服务端口为例)
/etc/init.d/sshd restart ---------重启sshd服务。若22(sshd)端口没有开放,可用此方法重启
例:telnet 192.168.23.128 22 (客户机测试服务器上的服务是否正常,IP和端口)
不通可能原因: 服务器端防火墙阻挡; 端口没有开放,服务器端没有对应的服务。
客户端ssh工具:Securcrt,xshell,putty --------默认的端口号都是22
服务器端的ssh服务:进程名sshd;对应服务器的软件:【openssh(连接),openssl(加密)】
=====================================三、 linux命令整理:====================================
====================说明:1、创建;2、查看;3、修改;4、拷贝;5、删除;6、其他;7、常用的快捷键========================
Linux中‘目录’和‘文件’这两个名字的区别
‘目录’相当于windows系统中的文件夹;
‘文件’相当于windows系统中文件夹中创建的文件(例test.txt)。
首页:创建Linux普通用户、修改用户密码
useradd hbxgril -------创建用户useradd
tail -1 /etc/passwd ----------查看刚创建的用户
passwd hbxgril --------给用户hbxgril修改密码
su - hbxgril -------切换到hbxgril用户(-和用户名中间有空格)
echo '123' |passwd --stdin hbxgril ------修改密码的另一种方式(|是管道,把前面的123密码通过 | 传给passwd,然后通过 --stdin接受传过来的passwd作为用户hbxgril的密码)
注意注意!!!root用户在输入信息的时前面命令提示符是 #,普通用户命令提示符前是 $ 符号。
1 创建目录/文件
1 .1 创建目录(相当于文件夹)
mkdir /data 创建data目录
mkdir -p 连续创建两级或两级以上的目录 例:mkdir -p /data/mak -----创建了data和data下的mak两级目录
查看目录 ls -ld /data ------创建完可查看目录(ld可查看目录的详细信息)
cd / ------------切换到根目录
cd /data ----------切换到data目录
mkdir data -------------先切换到根目录在直接创建data目录,表示在根目录/下创建了一个data目录
cd /; mkdir data ----------先切到根目录,在到根目录创建data目录,这里;作用是把两个命令在一行分隔开
cd .. ---------退回到上级目录
cd . ---------当前目录
1.2 创建文件(相当于创建的文本文档、word文档等带后缀的文档)
touch 创建文件、改变文件的时间戳
-a 改变文件的访问(access)时间
-m 改变修改(modify)时间 (access时间或者modify时间改变,change时间也会改变)
例: touch /data/oldboy.txt ---------------创建文件
例: touch -a /data/oldboy.txt -----------改变文件的时间(access时间)戳
例: touch -m /data/oldboy.txt -----------改变文件的时间戳(modify时间)
在目录中创建多个文件
方法1 :
touch /data/stu{1..5} --------在data目录下创建5个stu文件(若创建的文件已经存在,那么就只更新这个已经存在的文件的时间;文件不存在就创建文件)
ls /data --------查询data目录下创建的文件
方法2:
1.3在创建的文件中添加内容
vi windows记事本,简单 。 例:vi oldboy.txt ----在文本中添加内容。
vim 复杂编辑器。 复杂功能,可以高亮,自动缩进功能(写shell,python脚本用)
方法1:
步骤:vi oldboy.txt ----编辑oldboy.txt文档
点击回车 →按 a 或者是 i →输入要添加的内容 →内容输入完成点击 esc →最后输入 :wq 完成保存。
若是不想保存最后可输入 :q! 强制退出。
cat oldboy.txt ---------查看oldboy.txt文档中添加的内容
*****方法2(直接创建文件并在文件中添加内容):
echo 打印输出内容。 例 : echo $pwd --------------打印出变量$pwd的值。
echo 配合 ‘>’ 或 ‘>>’ 可以为文件覆盖及追加内容。(‘>’意思是重定向,会清楚文件里所有以前的数据;“>>”为追加内容,只在文件尾部追加需要的内容),
还有个较复杂不常用的类似命令printf。
例1:echo ‘oldboy’>oldboy.txt --------是在文件oldboy.txt文件中添加内容,没有该文件时创建文件并写入内容,有该文件时,现在输入的内容会覆盖之前的内容。
例2:echo ‘oldboy’>>oldboy.txt --------是在文件oldboy.txt文件中添加内容,没有该文件时创建文件并写入内容,有该文件时,现在输入的内容会追加在之前文件里内容的后面。
echo 'I am studying linux' > /data/oldboy.txt ---------添加文件并插入内容
注意:‘>’ 的意思是data目录中没有oldboy.txt文件时创建该文件并写入内容,有文件时只在该文件中添加内容,且添加的内容是覆盖之前的内容。
echo 'I am a student'>>/data/oldboy.txt -----------添加文件并插入内容
注意:‘>>’ 的意思是data目录中没有oldboy.txt文件时创建该文件并写入内容,有文件时只在该文件中添加内容,且添加的内容是在之前的内容后添加,不覆盖之前的内容。
*****方法3 (直接创建文件并添加内容)
1.单行加入内容
cat >oldboy.txt --------如果有这个文件就只往这个里面添加内容,‘>’ 表示会覆盖之前文件中的内容,如果没有就会创建该文件会创建该文件写入输入的内容,之前的内容被覆盖。然后ctrl+d或ctrl+c保存。
2.可多行加入内容
cat >>test.txt <<eof
test
liyao
oldboy
eof
----------如果有这个文件就只往这个里面添加内容,‘>>’ 表示会在这个文档中追加输入的内容,如果没有就会创建该文件追加输入的内容,之前的内容不会被覆盖。ctrl+d 或 ctrl+c 保存。
注意:’eof’ 是成对存在,任何字母都可以,只要是成对存在的。
特殊符号介绍:
(‘ > 或 1> ’;’ >> 或 1>> ’;’ 0< 或 < ’;‘ 0<< 或 << ’) 箭头指向的方向是数据流向。
> 或 1> 输出重定向 把前面输出的东西输入到后边的文件中,会清除文件原有内容。
>> 或 1>> 追加输出重定向 把前面输出的东西追加到后面的文件尾部,不会清除文件原有内容。
0< 或 < 输入重定向 输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名。
0<< 或<< 追加输入重定向 后面跟字符串,用来表示‘输入结束’,也可以用ctrl+d 来结束输入。
2> 错误重定向 把错误信息输入到后边的文件中,会删除文件原有内容。
2>> 错误追加重定向 把错误信息追加到后面文件中,不会删除文件原有内容。
例:echo '1 2 3 4' >oldboy.txt ----- 在文件中插入内容
xargs -n 2 <oldboy.txt -------给文件中的内容分组,两个一组
重要:
需求:文本中添加内容,命令正确输入内容,命令错误在文件中输出错误日志。
方法1: (表示命令错误)
方法2 >&或2>&
命令正确可输出正确的内容,命令错误时“2>&”表示报错的日志输入到1(a.txt)的文件中去
方法3 &>
1.4 在文件中添加序列
seq = sequence 序列
例:seq 10 -----从1到10
seq 3 10 -------从3到10
seq 1 3 10 --------从1到10 每数之间间隔是3
seq -s " " 10 ----------横着一行打印,从1打印到10(-s是可以指定分隔符)
2 查看目录、文件信息
2.1查看文件中添加的内容
cat 查看文件内容 例子 : cat oldboy.txt ---------查看oldboy.txt文件中的内容
2.2查看目录、属性
ls =list(列表) 列出目录 例子: ls / --------列出(查看)根目录下的目录
ls -l(long) 长格式,带属性 例子:ls -l/ ------列出根目录文件的详细信息文件
-d (directorys) 查看目录
tree -d /data -----以树状图的形式列出data下所有的目录(类似 ls -d的使用)
-a 查看目录中的隐藏文件 例: ls -a /data -------列出data目录下所有的目录、文件和隐藏文件(-a是包含隐藏文件一起显示)
tree -a /data 是以树状图的形式列出data目录下所有的目录、文件和隐藏文件(-a是包含隐藏文件一起显示)
-------上图是列出根目录下级所有目录的详细属性信息
ls -l /data 和ls -ld /data 命令的区别如下:
ls -l /data 是列出/data文件下所有的文件详细属性信息;
ls -ld /data 是列出/data这个目录的详细属性信息。
2.3 查看当前所在的目录
pwd 查看当前所在的目录详细路径;
pwd -L 查看当前目录所在的详细目录;
pwd -P 查看当前目录所在的详细目录。
*****2.4 find 查找(结合5.3中删除的笔记看)
find 查找
-type 文件类型(f(file文件类型),d(directory目录),c(character字符串),b(block块、磁盘设备),s(socket通信),l(link链接))
-name 文件名
-mtime 时间 ----按修改时间查找,时间数字(+7代表七天前,7代表第七天,-7表示最近七天)
! 除了....外、非的意思
-o =or 是或者的意思
-a =and 是并且的意思
例:find / -type f -name 'tte.txt' ----------查看tte.txt文件所在的详细目录
-----xargs搭配用法(xargs是个不错的命令,有机会可以总结)
find /data -type f -name "*.log" -mtime +15 |xargs rm -f -------查找/data目录中以.log结尾的日期在15天以前的文件,并删除(-type f 类型是文件 ,-f是删除文件)
find /data -type d -name "*oldboy" -mtime +30 |xargs rm -rf -----查找/data目录中以oldboy结尾的日期在30天以前的目录,并删除(-type d 类型是目录,-rf是删除目录)
说明: | (竖线),相当于从左边进右边出,把左边的信息传给右边。 |xargs 是把左边的命令的结果通过 | 这个管道,xargs汇成一条数据, 传递给右边的命令执行。
注意:| 和 |xargs的区别,如下图 (cat /data/lls /data/lass.txt表示查询两个文件中的内容)
2.5 查看文件中的部分内容(head用法)
head 首,头 例 : head -2 text.txt ---读取文件的前2行
例:head text.txt ----不加默认是读取前10行
2.6查看文件中的部分内容(tail用法与head用法向对应)
tail 尾部,末尾 例:tail -2 test.txt ------读取文件的最后2行
例:tail test.txt -------默认读取文件的后10行
*****2.7过滤文件中的部分内容(grep用法-----三剑客之三)
grep -v --------排除(过滤掉)(-v表示排除的意思)
grep ------过滤出内容(包含)
2.8 查看文件中间部分内容
需求:查找文件ett.txt(50行)内,前20到30行的内容。(结合1.4的seq内容查看)
seq 50 >ett.txt ------创建文件,插入50行的信息
方法1:(比较low的方法)
head -30 ett.txt |tail -11 -------head 是取前30行,tail是取后11行
*****方法2: (sed方法----重要【三剑客之二】)
sed = stream editor 流编辑器,可实现对文件的增、删、改、查、替换
(1)sed当作查看的方法:
sed '20,30'p ett.txt ----------该命令是输出ett.txt文本中所有的信息,不是输出20到30行的信息
sed -n '20,30'p ett.txt ---------该方法最有效率 (-n 是取消默认输出,按照规格打印出20到30行的信息; p(print)是打印的意思)
sed -n '$'p ett.txt ------$表示最后一行。
ifconfig | sed -n '2'p ----显示IP地址信息的第二行信息
(2) sed当作替换、修改的方法(替换一个文件中的信息):
g 与s联合使用时,表示对当前行全局匹配。
s 常说的查找并替换,用一个字符串替换成另一个。
-e 允许多项编辑。
-i 修改文件内容。
sed 's#oldgril#zhangsan#g' old.txt ------------改方法是替换输出的内容(s表示替换;g表示全局替换;3个#是分隔符也可用其他符号表示,一般可以用 # 或 / 或 @等,前面是文本中的要替换的内容,后面是替换后的 内容),不加-i是命令行的内容输出时内容有更改,文件中的内容没更改
sed -i 's#oldgril#zhangsan#g' old.txt -------------(加了-i 是更改old.txt文件中的内容)
(3) sed当作替换、修改的方法(替换多个文件中的信息):
需求:把oldboy目录及子目录下所有以扩展名 .sh结 尾的文件中包含oldoldboy的字符串全部替换为younggril。
另一种替换内容方法:
sed -i 's#oldoldboy#younggril#g' `find /oldboy -type f -name '*.sh'` --------`这个符号是键盘右上角和~一起的那个`(点号),表示先执行``(两个点号里面的内容)
*****方法3:(awk 三剑客之首)
awk 过滤、输出内容,一门语言
NR 代表行号
= 是赋值
== 是等号
扩展:
例:将/data/oldboy/oldboy.txt文档中的内容inet addr:192.168.198.128 Bcast:192.168.198.255 Mask:255.255.255.0通过过滤只输出如下内容:192.168.198.128 192.168.198.255 255.255.255.0
解析awk语句:-F是指定域的分隔符; [ :] 括号中是空格和:(冒号)表示通过空格和冒号进行分割;[ :]+因为指定了空格和冒号两个分隔符(或者多个分隔符),所以需要+进行连接;{}中的内容,print是指定打印的内容;$加数字是把通过分隔符分割开的内容进行需要的打印出来,$3是分割的第三个内容;最后是指定的文件。
方法4:(可结合2.7的grep来查看)
-B 除了显示匹配的一行之外,并显示该行之前的n行
-A 除了显示匹配的一行之外,并显示改行之后的n行
-C 除了显示匹配的一行之外,并显示改行之前后各n行
2.9 树状图查看创建的文件目录及yum的用法
tree -a 显示隐藏文件
-d 只显示目录
-L 显示几级 例:tree -L 1 /oldboy -----显示oldboy目录下的一级目录和文件
-dL 只显示目录的几级 例: tree -dL 1 /oldboy -----------只显示oldboy目录下几级的目录
-f 为每个目录显示完整的路径 例:tree -dLf 2 /oldboy ------只显示oldboy目录下几级目录的完整路径
-i 去掉树状图前面的横线 例: tree -dLfi 2 /oldboy ------只显示oldboy目录下几级目录的完整路径(树状图没相连的短横线)
-F 区分文件和目录 例: tree -F /oldboy ------区分oldboy目录下的文件和目录
例:tree /data --------是以树状图的形式列出data目录下所有的目录、文件>
例:tree -a /data -------- 是以树状图的形式列出data目录下所有的目录、文件和隐藏文件(-a是包含隐藏文件一起显示)
例:tree -d /data ---------树状图的形式展示data目录下的所有目录
--------下图左,创建多级目录可以用 tree /data 查看创建的多级目录,如出现上述提示是系统未安装该 tree 软件,
可通过以下步骤来安装该程序:
安装tree步骤(前提是有网的条件下):
- ping Baidu.com --------拼一下该电脑是否能上网(若联网可以执行下列语句进行安装tree软件【输入该命令会一直连baidu,使用ctrl+c停止ping】)
- yum install tree -y --------下载安装tree这个软件包(-y)就是直接安装不提示
安装完成tree后可查看data的层级目录:
tree /data/ ----------查询data目录,用树状图的形状展示目录和文件
LANG=en -----------若查询的目录存在乱码,可调整字符集显示英文字符集(严格区分大小写)
3 .yum update -----------该命令是更新系统的补丁。
4 .yum install lrzsz telnet tree nmap nc -y ----------(下载安装 lrzsz 上传下载工具包(sz是下载命令,rz上传命令); 前提是在Linux服务器联网的情况下进行安装)
2.10 man 查看所有命令使用方法
man cp -------查看cp这个方法是怎么使用的(如果忘记某个方法的使用可以使用man加方法名来查看),结束查看需要输入 :q 结束。
cp --help -------该方法和man cp 方法相同。
help cd -------部分内置命令需要这样查。(cd命令的使用用man cp或者是cd --help无法查看,因为cd是系统内置命令)。
百度如果要搜索该cp的使用方法时,搜索Linux的cp命令,需把Linux带上。
2.11 which 查看命令路径的命令
which cp -----查询命令的路径
2.12 date 查看系统时间
date -----查看系统时间
date -s 10:11:01 --------修改系统时间,时分秒。
date -s "12/25/2023 23:13:05" -------修改时间,年月日,时分秒
2.13 stat查看文件的属性(包括文件大小,创建时间,修改时间等详细信息)
Access:访问时间
Modify:修改时间
Change:更改时间
2.14 history查看历史命令
history -----查看历史命令
!3 -------调用历史命令中的第三个命令
history -c ------清空历史命令
history -d 5 --------只清除第五条的命令
ecport TMOUT =10 -------- 连接的超时(10是10秒)(临时生效,重启后就失效)
export HISTSIZE=5 -------显示命令行最近的5条记录(临时生效,重启后就失效)
export HISTFILESIZE=10 ----------命令行命令对应文件的记录数~/.base_history(临时生效,重启后就失效)
改为永久生效:
echo 'export TMOUT=300' >>/etc/profile
echo 'export HISTSIZE=5' >>/etc/profile
echo 'export HISTFILESIZE=5' >>/etc/profile
source /etc/profile --------------三个命令是把命令添加到文件中,但要重启服务器才生效,不重启服务器,就需要使用该命令立刻生效
3.修改文件内容(分组)
xargs用法:
xargs 从标注你输入获取内容创建和执行命令 -n 数字(表示分组),该方法只支持空格才能进行分组换行,其他都没用。
4.拷贝/移动 目录、文件
4.1 拷贝文件
cp = copy 拷贝文件或目录 例:cp oldboy.txt /tmp/ ---------把data目录下的oldboy.txt文件拷贝到tmp目录下
4.2 拷贝目录
cp -r 或者 cp -a 拷贝目录
-r 递归,用于拷贝复制目录及目录下所有文件(与Windows拷贝一样目录的结果一样)
-a 相当于pdr ;
-p 连同档案的属性一起复制过去,而非使用默认属性。
例:cp -r /data /tmp/ -----------拷贝data目录及目录中所有文件到tmp目录下。
4.3拷贝文件覆盖同名文件
方法1:
\cp /am/test.txt /data/ -----------am目录下的test文件替换data目录下的test文件(cp前加\,该命令直接进行替换不提示是否替换)
方法2:
/bin/cp /am/test.txt /data/ -----------同方法一作用相同一样的作用(/bin/cp是加的命令cp的全路径)
方法3
cp /am/test.txt /data/ --------该命令有是否替换的提示信息
4.4移动目录、文件(移动到另一个目录下,之前的目录没有了)
mv 移动目录
5.删除目录、文件
5.1 直接rm删除文件(容易误删,友情提示删除目录或者文件之前请谨慎,删除无法恢复)
rm = remove 删除的意思
rm 和 rm -f 都是删除 (rm删除有提示是否删除,rm -f 删除直接删除没有提示)
删除一个文件:
例1: rm -f /data/oldboy.txt ---- ------删除oldboy.txt文件
例2 rm /root/data/a.txt ----------删除root目录下data目录下的a.txt文件
删除多个文件:
例:rm -f /data/1.txt /data/2.txt /data/3.txt
5.2 直接rm删除目录(容易误删需谨慎)
rm -fr 删除目录的语法
5.3 find查找,然后删除(结合4.4笔记一起看,两者密不可分)
find 查找删除一个文件
例1:
find /data -type f -name 'oldboy.txt' -exec rm {} \; ----------查找data目录下类型(-type)为文件(f)、姓名(-name)为oldboy.txt的文件,然后执行(exec)删除(rm),
{}表示找到的内容,\是固定搭配。
find 查找多个文件,同时进行删除
例2:
fing /data -type f -name '*.txt' |xargs rm -f
6.文件的上传和下载
上传下载的是针对文件的,不能是目录,要是要下载目录,需先压缩成zip的压缩包。
传输文件除了rz、sz进行上传下载,还可以通过ftp、sftp(SSH服务)、winscp等工具来传输文件。
yum install lrzsz -y --------安装上传、下载的包(rz是上传,sz是下载,-y是不提示直接安装)
6.1文件上传
cd /oldboy --------文件上传到那个目录下就先进入哪个目录
rz ----------输入rz(上传),回车就可以选择上传文件了
rz -y -------------覆盖之前同名文件。(上传的文件覆盖之前的同名文件)
6.2 文件下载
sz 文件名 ------下载文件到客户机
sz -y 文件名 ---------下载文件直接覆盖本地之前的同名文件
7.其他
7.1 别名使用alias和unalias使用
alias 查看和设置别名 例:查看别名直接输入alias
unalias 取消别名
说明:为了防止用户误操作,所有centos linux系统在设计时,默认执行cp的操作是调用了cp的别名(相当于执行cp -i).所以提示覆盖。cp命令默认是不会提示覆盖的,但是cp带-i 参数执行时会提示,这样在linux下输入cp命令实际上运行的是cp -i,加上一个 / 符号或者写cp全路径/bin/cp就是让此次的cp命令不使用别名(cp -i)运行。
分享别名的困惑及解决技巧
https://blog.51cto.com/oldboy/699046
8 常用的快捷键
命令或路径补全:输入一个命令的首字母,按 三下 ‘tab’ 键,会显示所有首字母开头的命令单词;输入命令的两个或以上,按一次 ‘tab’ 键会补全命令。(如果tab 不到路径命
令,就代表没有这个路径或者命令,还有可能权限不够。
ctrl + c 终止当前任务命令或程序。
ctrl + d 退出当前用户环境。相当于exit 或 logout
ctrl + l (字母是L) 清理当前屏幕上的所有命令。相当于 clear 命令。
ctrl + shift + c linux命令中的复制。
ctrl + shift + v Linux命令中的粘贴。
ctrl + a 光标到一行命令开头,相当于 home 快捷键。
ctrl + e 光标到一行命令结尾,相当于 end 快捷键。
ctrl + u 清除光标前所有输入的命令(前提是在一行里面)
ctrl + k 清楚光标后所有输入的命令(前提是在一行里面)
ctrl + r 搜索(搜索今天使用过的命令按ctrl + r后输入一下就出来了)
ctrl + s 挂起(按此快捷键后,命令行无法进行输入了)
ctrl + q 解除挂起(按此快捷键后,就解除挂起可以输入命令了)
ctrl + w 清楚当前行所有的命令
uname -m 查看Linux系统是多少位的
cat /etc/redhat-release 查看操作系统 的版本
uname -r 查看内核
=====================================四、Linux创建快照和克隆===========================================
1、快照的作用 (虚拟机上的操作)
快照相当于节点备份,在一个时间段创建快照,该时间段之前对系统进行的所有操作(如增删改查等操作)操作都包含在该节点的快照中,若在创建快照这个时间段之后对系统中的文件进行了其他操作(如增删改查),想回到该节点之前时,可以通过快照的方式实现。
例: 在系统中创建了一个文件,之后增加了快照,后来误删除了创建的文件,此时需要恢复文件,就可以返回到快照的这个节点就行了。
2、克隆CentOS
2.1克隆步骤如下截图
2.2 克隆完成需配置IP地址
注意!!!克隆的系统和之前的一样,但是网络会有问题,查找不到IP地址。
克隆机器设置IP地址的步骤:
vi /net/sysconfig/network-scripts/ifcfg-eth0 ----------修改IP地址的文件
删除文件中的两行内容有两种删除方式:(1)光标移到要删除的那行,然后输入 dd 进行删除,在输入 :wq 进行保存回到命令行。
(2)输入 i 选中要删除的行删除,在点击 tab ,最后输入 :wq 进行保存回到命令行。
> /etc/udev/rules.d/70-persistent-net.rules -----------清空文件的内容(记录主机中所有网卡的MAC地址)
ifup eth0 - -------查看网口是否已好,目前没有成功,需重启
reboot -------重启克隆服务器
ifconfig ------重启后查看IP成功
2.3 删除克隆服务器
================================五、Linux系统的目录结构介绍==============================================
linux 目录的特点:
1、 / (根)是所有目录的顶点;
2、 目录结构像一颗倒挂的树;
3、目录和磁盘分区是没有关联的;
4、/ (根)下不同的目录可能会对应不同的分区或磁盘;
5、所有的目录都是按照一定的类别有规律的组织和命令的。
Linux里设备不挂载是看不到入口的,如果希望设备被访问,就必须给这个设备一个入口,这个入口就叫做挂载点,挂载点的实质是一个目录
mount -------挂载文件命令
df -h ----------查看挂载分区
fdisk -l ----------查看磁盘分区(-l是L的小写)
cat /etc/fstab ----------查看系统默认配置的挂载目录
光驱也是一种设备 /dev/cdrom (设备的路径和(cdrom)光驱设备名)
cd /dev/cdrom -------进入光驱设备路径
ls /dev/cdrom -------查看光驱设备路径
mount /dev/cdrom /mnt ----------把光驱设备路径挂载到mnt目录下
虚拟机挂载文件详细步骤如下:
虚拟机挂载CentOS的安装包(安装包是一个IOS的镜像文件),一般在系统中安装软件,都是从安装包的IOS镜像文件中安装的,IOS的安装包一般都包含的Linux系统的绝大部分软件。所以在网上一般没有Linux系统的单独完整的安装包,只有挂载操作系统的安装包然后从系统安装包中去安装需要的软件。
步骤1:
步骤2:
下图命令,在没有挂载IOS镜像文件的操作系统的光盘时,查看不到挂载分区、查看不到磁盘分区、进入不了设备分区路径,但是只能查看光驱路径。
步骤3:
对光驱设备进行挂载。
mount /dev/cdrom /mnt --------把光驱设备挂载到mnt目录下
==============================================六、Linux目标结构标准========================================================
1、Linux目录层次标准(FHS)
Linux目录层次标准是Linux目录规范标准。
目录层次标准文档(FHS2.2 pdf 和FHS2.3 pdf):https://www.pathname.com/fhs/
FHS定义了两层规范:第一层 是 ‘/’ 根目录下的各个目录应该放什么文件数据。例如:/etc 目录下放置系统的配置文件(如:/etc/exports;/etc/hosts),而 /bin和 /sbin 放置程序及系统命令。
第二层 是针对 /user (第二层次标准)和 /var 这两个目录的子目录来定义。例如: /var/log 下放置系统日志文件等。 提示:/var 分区单独分出来,硬盘足够大,我们都有监控,剩余20%会报警。
2、 / 根目录结构
2.1 /bin目录
所有用户常用二进制命令所在的目录。例如 ls、cp、mkdir、rm、cut、cd等命令。/bin 目录和 /user/bin 类似。
which ls -------查看ls命令所在的目录
2.2 /boot目录
Linux的内核及系统引导程序所需的文件目录。安装系统分区的时候一般要分一个boot分区。常见分区: /boot 128M swap内存的1.5倍或全给。
ls /boot/grub -------查看菜单目录(系统启动的时候加载菜单目录)
***** 2.3 /dev 目录
设备文件的目录。比如声卡、磁盘、光驱...........。
*****2.4 /etc 目录
软件安装包( yum,rpm)的配置文件默认路径。
*****服务的启动命令也在该目录下面。 如: /etc/init.d/sshd restart ------重启ssh服务的命令; /etc/init.d/iptables stop ------关闭防火墙的命令
/etc/fstab ---------开机自动挂载设备(磁盘)的文件
/etc/hosts -----------主机名的解析文件
/etc/inittab ----------开机需要加载的文件(里面有运行级别还有相关的脚本。如:开机设置的3级别,我需要改成5级别(不能随意改动,查看就行),就是该这个文件的内容)
/etc/issue --------登录之前的信息
/etc/motd ---------登录之后会显示文件中的信息。(在该文件中加什么信息登录的时候会提示什么信息)
/etc/profile ----------全局环境变量
/etc/resolv.conf -------------要上网配置的DNS网络,需要更改此文件
/etc/passwd -----------更改密码(查看创建的用户信息)
** 2.5 /home 目录
普通用户的家目录默认数据存放目录。
ls /home -------查看创建的普通用户
2.6 /root 超级管理员的家目录
2.7 /tmp 临时文件目录
2.8 /user 用户程序及数据、帮助文档、二进制命令等的目录
2.9 /var 变化的目录。一般是日志文件,cache 的目录
2.10 /proc 显示内核及进程信息的虚拟文件系统
2.11 /sbin和 /user/sbin 超级用户命令的目录
*****3 重要子目录的说明
3.1 /etc/sysconfig/network-scripts/ifcfg-eth0 配置网络地址及GW等
/etc/sysconfig/network-scripts/ifcfg-eth0 --------------该路径是配置网络地址及GW等,使得网卡生效。
route -n -------查网关(上网的出口/入口)
cat /etc/resolv.conf ------查询DNS,该文件是DNS的文件
例:cat /etc/sysconfig/network-script/ifcfg-eth0 -------查看第一张网卡的配置
例:vim /etc/sysconfig/network-script/ifcfg-eth0 --------修改(第一张)网卡的配置信息(通过命令输入‘setup’ → ‘network configuration’修改网卡配置也是在该这个文件)
(1) /etc/init.d/network restart -----------------重启网卡(影响所有网卡)
(2) ifdown eth0 && ifup eth0 -----------------重启网卡 (只针对eth0网卡)
网卡eth0配置文件说明:
DEVICE=eth0 ----------物理设备名。eth0表示第1块网卡
TYPE=Ethernet -------以太网
ONBOOT=yes -----------控制网卡是不是开机启动
NM_CONTROLLED=yes -------------网络管理控制(可以不了解)
BOOTPROTO=dhcp ---------------其中,proto取下列值之一:none 引导时不使用协议;static 静态分配地址;bootp 使用BOOTP协议,或dhcp,使用DHCP协议。(自己学习可以选择dhcp,dhcp是局域网 中自动分配IP的工具和服务)
IPADDR=10.0.0.7 --------------addr是IP地址。生产环境一般是设置固定IP。
NETMASK=255.255.255.0 -----------------子网掩码,划分网络位和主机位。
DNS2=202.106.0.20 ----------主网关。把访问的网站地址解析成对应的服务器IP。(DNA是域名和IP的解析工具)
GATEWAY=10.0.0.254 -------------网关地址,路由器的地址(通过网管出去才能上网)
DNS1=8.8.8.8 ------------备网关
USERCTL=no
PEERDNS=yes
IPV6INIT=noHWaddr 00:0C:29:2F:C0:42 --------网卡的MAC地址,48位。
编辑网卡信息:
先备份:
再编辑:
若要让配置文件的内容显示,IPADDR、DNSGATEWAY、IPV6INIT等内容,须通过设置:setup来设置然后写入文件中。如下:
3.2 /etc/resolv.conf 服务器本地DNS配置文件
/etc/resolv.conf --------DNS配置文件路径。(DNA实现域名和IP的互相解析)
vim /etc/resolv.conf ------------修改DNS文件内容
图形配置界面输入setup:
说明:
(1)linux客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)
(2)linux客户端DNS也可以在/etc/resolv.conf里设置;
(3)网卡里的设置DNS优先于/etc/resolv.conf,如果重启网络网卡的dns会覆盖/etc/resolv.conf的设置
3.3 /etc/hosts 设定用户IP与名字(或域名)的对应解析表
/etc/hosts ----------设定用户IP与名字(或域名)的对应解析表,相当于LAN局域网内的DNS
类似于windows操作系统中的 c:\WINDOWS\system32\drivers\etc\hosts,LAN内IP域名解析文件。开发、测试时做的临时的域名解析常用,
英文hosts -The static table lookup for host names.Host的解析在机房的服务器相互调用中也会常用,如门户网站的解析真实案例:
hosts企业的作用:
1、开发、产品、测试等人员,用于通过正式的域名测试产品;
2、服务器之间的调用可以用域名(内部的DNS)。
3.4 /etc/sysconfig/network 设置主机名的目录
/etc/sysconfig/network -------------可修改机器名及网卡启动、网关等配置
uname -n ---------------查看主机名
hostname ----------------查看主机名
永久更改主机名,需同时修改以下两项:
1、 vi /etc/sysconfig/network 或 sed -i 's# 输入主机名#替换后的主机名#g' /etc/sysconfig/network ---------------更改配置文件中的主机名
2、 hostname 查主机名 --------------更改输入命令窗口中出现的主机名(只有这个命令的话,它只是暂时更改命令窗口中的主机名,配置文件中的改命令改不了)
3.5 /etc/fstab 实现开机要挂载的文件系统的一个文件
详情讲解请看: https://www.cnblogs.com/ylnic/archive/2011/05/17/2048885.html
fstab 一但配置错误,会导致服务器无法启动
3.6 /etc/rc.local
用于存放开机自启动程序命令的文件(chkconfig这个文件常用来管理yum/rpm来安装的程序的服务的开机自启动),自己开发的程序,习惯把启动命令放入/etc/rc.local 文件中,实现开机启动这些程序,Linux开机时会把 /etc/rc.local 里的内容执行一遍。
3.7 /etc/inittab
设定系统启动时 init 进程把系统设置成什么样的(只查看就行,不要更改!!!)(runlevel 运行级别及加载相关的级别对应启动文件设置,Linux开机启动流程)。
3.8 /etc/exports
设定NFS网络文件系统用的配置文件。
3.9 /etc/init.d
这个目录是用来存放通过 yum 或rpm 工具安装的软件的默认启动程序的目录。比如:CentOS、RedHat;
3.10 /etc/profile
系统全局环境变量永久生效的配置文件。定义别名以及PATH变量等。
3.11 /etc/profile.d
系统登录程序的一个目录。
(讲跳板机,登录的时候加载 /etc/profile.d的脚本)
====================================================七、压缩、解压缩文件或目录=====================================================================
1、压缩目录或文件(压缩文件的后缀名是 .tar.gz):
1.2解压缩目录或文件:
2、压缩和解压缩文件(此方法只能压缩和解压缩文件)
==============================================八、================================================================
================================================= 九、第一阶段学习学习效果考察=============================================================
1、创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写入内容“inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0”(不包括引号)。
2、将题1中的oldboy.txt文件内容通过命令过滤只输出如下内容: 10.0.0.8 10.0.0.255 255.255.255.0
3、将题1中的oldboy目录移动到/tmp目录下,并将/etc/passwd文件复制到/tmp/oldboy下。
4、在题3的基础上使用awk取passwd文件的第10行到20行的第三列重定向到/tmp/oldboy/tets.txt文件里。
5、在题3的基础上要求用命令rm删除文件时提示如下禁止使用rm的提示,并使用该效果永久生效。
[root@oldboy oldboy]#rm -f passwd Do not use rm command.
6、在题3的基础上,删除/tmp/oldboy/下除passwd以外的其他的文件。
7.在题3的基础上,请打印/etc/passwd文件中的第2-5行(不低于三种方法)。
8、在题3的基础上,使用命令调换passwd文件里root位置和/bin/bash位置?即将所有的第一列和最后一列位置调换?
例:默认:root:x:0:0:root:/bin/bash 修改后 /bin/bash:x:0:0:root:/root:root
9、把/data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgril的字符串全部替换为oldboy。
10、查找/oldboy下所有7天以前以log结尾的大于1M的文件移动/tmp下
11、什么是linux的运行级别,请描述linux的运行级别不同数字的含义(附加题)
12、请描述buffer和cache的区别(附加题)
13、请说出你知道的下列字符在linux里可以代表的意义(附加题)。
例:~| > >> < << !
----答案1:
mkdir -p /data/oldboy ---创建目录
touch /data/oldboy/oldboy.txt ------创建文件
vi /data/oldboy/oldboy.txt 然后输入 i 进行录入信息,然后按 esc 返回,最后输入 :wq 完成保存,退出。(如不需要保存可输 :q! 退出不保存。)
---答案2:
awk -F '[ :]+' '{print$3" "$5" "$7}' /data/oldboy/oldboy.txt
---答案3:
mv /data/oldboy /tmp
cp /etc/passwd /tmp/oldboy
---答案4:
awk -F '[:]' 'NR>9&&NR<21{print$3}' /tmp/oldboy/passwd >/tmp/oldboy/test.txt
---答案5:
如果需要删除永久的rm命令,需要到/etc/profile和/etc/bashrc两个文件中把添加的删除即可。
----答案6:
find /tmp/oldboy -type 'f' ! -name 'passwd' |xargs rm -f
----答案7:
awk -F 'NR>1&&NR<6' /tmp/oldboy/passwd
sed -n '2,5'p /tmp/oldboy/passwd
head -5 /tmp/oldboy/passwd |tail -4
---答案8 :
awk -F '[:]' 'NR==1{print$7":"$1":"$2":"$3":"$4":"$5":"$6}' /tmp/oldboy/passwd
----答案9:
find /data -type f -name '*.txt' |xargs sed -i 's#oldgrid#oldboy#g'
-----答案10:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?