Linux使用大全:

1:查看Linux操作系统的IP地址:

ip addr

并没有获取到linux系统的IP地址。这是由于启动服务器时未加载网卡,导致IP地址初始化失败而造成的。

2:需要来修改网络初始化配置,设定网卡在系统启动时初始化。

1). 修改网卡的配置项

cd /				进入根目录
cd etc				进入etc目录
cd sysconfig		进入sysconfig目录
cd network-scripts	进入network-scripts
vi ifcfg-ens33		编辑ifcfg-ens33文件


进入文件后执行如下操作: 
①. 按 i 键 		 进入编辑状态
②. 按↑↓键来移动光标, 删除no,输入yes 
③. 按 ESC 键
④. 输入 :wq
⑤. 按 ENTER	保存退出

把这个文件的配置项ONBOOT的值有no改为yes即可

 

重启虚拟机即可

3:LInux的目录结构

Windows目录下是一个个盘符(C、D、E)目录是归属于某一个盘符的

Linux目录的特点:

1:/是所有目录的顶点

2:目录结构像一颗倒挂的树

  

4:Linux常用命令

ls:

ls+目录名:查看当前目录下的内容

ls+/:查看根目录下的所有文件和文件夹

ll :查看当前目录文件及目录的详细信息

pwd:

pwd:查看当前所在目录

cd:

cd+目录名:切换目录

特殊说明: ~ 表示用户的home目录 . 表示目前所在的目录 .. 表示目前目录位置的上级目录 举例: cd .. 切换到当前目录的上级目录 cd ~ 切换到用户的home目录 cd /usr/local 切换到/usr/local目录

cd .. 切换到当前目录位置的上级目录; 可以通过 cd ../.. 来切换到上级目录的上级目录。

cat:

作用: 用于显示文件内容 小文件
语法: cat [-n] fileName

说明:
	-n: 由1开始对所有输出的行数编号

举例:
	cat /etc/profile		查看/etc目录下的profile文件内容

cat 指令会一次性查看文件的所有内容,如果文件内容比较多,这个时候查看起来就不是很方便了,这个时候我们可以通过一个新的指令more。

more:

作用: 以分页的形式显示文件内容
语法: more fileName

操作说明:
    回车键 	向下滚动一行
    空格键 	向下滚动一屏
    b 		返回上一屏
    q或者Ctrl+C	退出more
	
举例:
	more /etc/profile		以分页方式显示/etc目录下的profile文件内容

当我们在查看一些比较大的文件时,我们可能需要经常查询文件尾部的数据信息,那这个时候如果文件很大,我们要一直向下翻页,直到最后一页,去看最新添加的数据,这种方式就比较繁琐了,此时,我们可以借助于tail指令。

tail

作用: 查看文件末尾的内容
语法: tail [-f] fileName

说明:
	-f : 动态读取文件末尾内容并显示,通常用于日志文件的内容输出
	
举例: 
tail /etc/profile		显示/etc目录下的profile文件末尾10行的内容
tail -20 /etc/profile	显示/etc目录下的profile文件末尾20行的内容
tail -f /itcast/my.log	动态读取/itcast目录下的my.log文件末尾内容并显示

操作示例:

A. 默认查询文件尾部10行记录

B. 可以通过指定参数设置查询尾部指定行数的数据

 

C. 动态读取文件尾部的数据

 

在窗口1中执行指令 tail -f 1.txt 动态查看文件尾部的数据。然后在顶部的标签中右键选择 "复制标签",打开新的窗口2 , 此时再新打开的窗口2中执行指令 echo 1 >> 1.txt , 往1.txt文件尾部追加内容,然后我们就可以在窗口1中看到最新的文件尾部的数据。

如果我们不想查看文件尾部的数据了,可以直接使用快捷键 Ctrl+C , 结束当前进程。

touch:

touch+文件名:如果文件不存在,创建文件

mkdir:

mkdir+目录名:创建目录

作用: 创建目录
语法: mkdir [-p] dirName

说明: 
	-p: 确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建

举例: 
    mkdir itcast  在当前目录下,建立一个名为itcast的子目录
    mkdir -p itcast/test   在工作目录下的itcast目录中建立一个名为test的子目录,若itcast目录不存在,则建立一个

rm:

rm+文件名:删除指定文件(删除文件时需要确定Y)

作用: 删除文件或者目录
语法: rm [-rf] name

说明: 
    -r: 将目录及目录中所有文件(目录)逐一删除,即递归删除
    -f: 无需确认,直接删除
	
举例: 
    rm -r itcast/     删除名为itcast的目录和目录中所有文件,删除前需确认
    rm -rf itcast/    无需确认,直接删除名为itcast的目录和目录中所有文件
    rm -f hello.txt   无需确认,直接删除hello.txt文件

==注意: 对于 rm -rf xxx 这样的指令,在执行的时候,一定要慎重,确认无误后再进行删除,避免误删。==

拷贝移动命令 (重点)

cp (copy 复制文件或者目录)

作用: 用于复制文件或目录
语法: cp [-r] source dest

说明: 
	-r: 如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件

举例: 
    cp hello.txt itcast/            将hello.txt复制到itcast目录中
    cp hello.txt ./hi.txt           将hello.txt复制到当前目录,并改名为hi.txt
    cp -r itcast/ ./itheima/    	将itcast目录和目录下所有文件复制到itheima目录下
    cp -r itcast/* ./itheima/ 	 	将itcast目录下所有文件复制到itheima目录下

操作示例:

 

如果拷贝的内容是目录,需要加上参数 -r

mv

作用: 为文件或目录改名、或将文件或目录移动到其它位置
语法: mv source dest

举例: 
    mv hello.txt hi.txt                 将hello.txt改名为hi.txt
    mv hi.txt itheima/                  将文件hi.txt移动到itheima目录中
    mv hi.txt itheima/hello.txt   		将hi.txt移动到itheima目录中,并改名为hello.txt
    mv itcast/ itheima/                 如果itheima目录不存在,将itcast目录改名为itheima
    mv itcast/ itheima/                 如果itheima目录存在,将itcast目录移动到itheima目录中

操作示例:

mv 命令既能够改名,又可以移动,具体是改名还是移动,系统会根据我们输入的参数进行判定(如果第二个参数dest是一个已存在的目录,将执行移动操作,其他情况都是改名)

打包压缩命令

作用: 对文件进行打包、解包、压缩、解压
语法: tar  [-zcxvf]  fileName  [files]
    包文件后缀为.tar表示只是完成了打包,并没有压缩
    包文件后缀为.tar.gz表示打包的同时还进行了压缩

说明:
    -z: z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
    -c: c代表的是create,即创建新的包文件
    -x: x代表的是extract,实现从包文件中还原文件
    -v: v代表的是verbose,显示命令的执行过程
    -f: f代表的是file,用于指定包文件的名称

举例:
    打包
        tar -cvf hello.tar ./*		  		将当前目录下所有文件打包,打包后的文件名为hello.tar
        常用 tar -zcvf hello.tar.gz ./*		  	将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
		
    解包
        tar -xvf hello.tar		  			将hello.tar文件进行解包,并将解包后的文件放在当前目录
        常用 tar -zxvf hello.tar.gz		  		将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录
        tar -zxvf hello.tar.gz -C /usr/local     将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录

操作示例:

A. 打包

B. 打包并压缩

C. 解包

D. 解压

  解压到指定目录,需要加上参数 -C

文本编辑命令 (重点)

文本编辑的命令,主要包含两个: vi (linux 自带得)和 vim (安装插件),两个命令的用法类似,我们课程中主要讲解vim的使用。

vi&vim介绍

作用: vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本

语法: vi fileName

说明: 1). vim是从vi发展来的一个功能更加强大的文本编辑工具,编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。 2). 要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:yum install vim

vim安装

命令: yum install vim

安装过程中,会有确认提示,此时输入 y,然后回车,继续安装:

  

vim使用

作用: 对文件内容进行编辑,vim其实就是一个文本编辑器 语法: vim fileName 说明: 1). 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件。 2). vim在进行文本编辑时共分为三种模式,分别是 命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式。

三种模式: - 命令模式 A. 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg、G) B. 通过vim命令打开文件后,默认进入命令模式 C. 另外两种模式需要首先进入命令模式,才能进入彼此

  | 命令模式指令 | 含义                              |
  | ------------ | --------------------------------- |
  | gg           | 定位到文本内容的第一行            |
  | G            | 定位到文本内容的最后一行          |
  | dd           | 删除光标所在行的数据              |
  | ndd          | 删除当前光标所在行及之后的n行数据 |
  | u            | 撤销操作                          |
  | shift+zz     | 保存并退出                        |
  | i 或 a 或 o  | 进入插入模式                      |

  • 插入模式 A. 插入模式下可以对文件内容进行编辑 B. 在命令模式下按下[i,a,o]任意一个,可以进入插入模式。进入插入模式后,下方会出现【insert】字样 C. 在插入模式下按下ESC键,回到命令模式

  • 底行模式 A. 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作 B. 在命令模式下按下[:,/]任意一个,可以进入底行模式 C. 通过/方式进入底行模式后,可以对文件内容进行查找 D. 通过:方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)

    底行模式命令含义
    :wq保存并退出
    :q!不保存退出
    :set nu显示行号
    :set nonu取消行号显示
    :n定位到第n行, 如 :10 就是定位到第10行

操作示例:

查找命令

find

作用: 在指定目录下查找文件
语法: find dirName -option fileName
举例:
    find  .  –name "*.java"			在当前目录及其子目录下查找.java结尾文件
    find  /itcast  -name "*.java"	在/itcast目录及其子目录下查找.java结尾的文件

操作示例:

grep

作用: 从指定文件中查找指定的文本内容
语法: grep word fileName
举例: 
    grep Hello HelloWorld.java	查找HelloWorld.java文件中出现的Hello字符串的位置
    grep hello *.java			查找当前目录中所有.java结尾的文件中包含hello字符串的位置
    grep  -n '王者' 大说.txt  查找文件中存在的数据,并且显示行号。    

操作示例:

常用命令: (重点)

1.top 任务管理器 查看进程的cpu ,内存占用情况。

2.kill -9 进程名字或者进程的PID 杀死某个进程

3.ps -ef | grep 进程名字 查询此进程的信息

4.定时关机 shutdown

shutdown -c 取消定时关机

shutdown 1分钟后关机

shutdown +60 '描述信息' 指定多少时间后关机

windwos 是通用。。

shutdown -s -t 3600 多少秒后自动关机 (只能通过命令取消)

shutdown -a 取消关机

5.reboot 立马重启

==注意:==

==在执行Linux命令时,提示信息如果显示为乱码,如上图所示。这是由于编码问题导致,只需要修改Linux的编码即可,命令如下:==

echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile

5: Linux命令使用技巧

1). Tab键自动补全

执行指令的时候,对于操作的文件/目录,按一下Tab会自动补全:

2). 连续两次Tab键,给出操作提示

如果上述以 "1." 开头的文件有多个,可以按两下Tab键,给出操作提示:

3). 使用上下箭头快速调出曾经使用过的命令

4). 使用clear命令或者Ctrl+l快捷键实现清屏

rm -rf /*  删库跑路

1:不小心删库了,跑路?

误执行了rm -rf /* 之后,除了跑路还能怎么办?其实像rm这样的敏感指定在生产环境中都是禁用的,如果某天,不小心执行了有什么方法可以挽救吗?答案是有的

1:案发现场还原:

c来的代码是这样的,然后放到了生产环境中去执行了。。。。。。。。

执行后发现了 rm -rf/ 的现象,就说明 new_lic_dir 变量是空的,导致执行 rm -fr $new_lic_dir/ 这条语句的时候,变成了 rm -fr /* 删库语句

原因:给 new_lic_dir 变量赋值的时候使用了反引号

反引号在Linux Shell命令中有特殊的含义:反引号间的内容,会被 Shell 先执行。其输出被放入主命令后,主命令再被执行。

也就是说, new_lic_dir 的值是 ${lic_path}/new_license 这条命令执行的结果,问题这哪是命令啊,所以肯定返回空值给 new_lic_dir 变量。

反引号应该改成双引号才对

2:如何应对:

既然发生了删库的事情,千万不要重启服务器,也不要关闭ssh连接的会话

查查还剩些什么

ls查看,可是发现ls已经没了QAQ

只能cd+Tab会自动出现指定目录下的所有文件,于是就可以一步一步来确认哪些系统文件被删了

通过一番的确认和对比后,发现主要被删除的有四个目录分别是:

  • /bin 、/boot 、/dev 这三个目录整个都被删除了;

  • /lib 目录里的动态库部分被删除。

    /bin 存放常用系统命令,ls、cp、rm、chmod 等常用命令都在此目录;

    /boot 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序;

    /dev 设备文件保存位置;

    /lib 存放程序所需的动态库和静态库文件。

/boot 被删除了,要是重启了服务器,系统就肯定起不来了。

cd 命令是在 /sin 目录下,/sin 还在,所以 cd 是可以正常使用。

所幸重要的数据库信息和文件都还没删除,所以首要的目标是要恢复 /bin、/boot、/dev、/lib 这四个目录。

3:还原文件:

1:由于 /bin 目录 和 /lib 部分动态文件被删除,常用的传递文件的方式是无法使用的,如 ftp、scp、mount 等

摸索了很久,竟然发现 wget 可以使用,wget 命令是在 /usr/bin 目录,所幸 /usr/bin 还健全。

于是,用了取巧的方法,先另一台正常的服务器,把 /bin 目录放到了 Web 服务器的 Web 目录,接着通过 wget 进行下载。

有戏,看到了成功的曙光。

2:但是新的问题就来了,我下载过来的命令文件,是没有执行权限的。

而 chmod 命令是在 /bin 目录的,它同样也被删除了,无法使用它来给予文件权限。

3:还在,在网上搜到了一个伟大命令 perl,可以通过它来给予文件权限:

perl -e "chmod 777, 'ls'" 真是个神奇的命令。

好了,这下赋值权限问题也解决了,成功在望了。

4:wget 是无法直接把 /bin 目录下载下来的,只能下载一个文件。

但是不可能一个一个去下载来进行恢复,这得要何年何月才能完成。。。

就想到了一个方法:

先通过 wget 的方式下载 tar 命令,并通过 perl 给予 tar 命令权限;

接着把另一台服务器把 /bin 目录打包成压缩文件,然后通过 wget 下载 bin 目录的压缩包文件;

最后通过 tar 命令把 bin 压缩包解压出来。

/bin 就这样恢复回来啦,剩余的其他目录 也是通过同样的操作恢复了回来。

此时笑容渐渐将逐渐恢复

总结:遇到 rm -fr /* 删库事件发生,一定要沉住气,稳住心态!

1、如果发现脚本执行不正常,果断立马的掐断它,没有造成重要的数据库信息被删除,如果掐断的时候再晚一点,可能就真没了;

2、当发现常用命令无法使用的时候,没有重启服务器,不然服务器就起不来了,也没有关闭 ssh 会话,不然无法在重新连接 ssh 会话了,也就无法进行操作了。

2:预防rm -rf /*

1、rm -rf 删除删除目录时要判断目录

#!/bin/bash
 
work_path=`pwd`
 
#如果目录不为空,才执行删除操作
if [ ${work_path} != "" ];then
    rm -fr ${work_path}/*
fi

2、shell脚本指定 set -u

执行脚本的时候,如果遇到不存在的变量,Bash 默认忽略它。

#!/bin/bash
 
echo $a
echo hello

上面代码中,$a 是一个不存在的变量,执行结果如下。

$ bash test.sh
 
hello

可以发现,echo $a 输出了一个空行,Bash 忽略了不存在的 $a,然后继续执行 echo hello。

最好是遇到变量不存在,脚本应该报错,而不是一声不响地往下执行。

set -u 就用来改变这种行为,在脚本加上它,遇到不存在的变量就会报错,并停止执行。

#!/bin/bash
set -u
 
rm -fr $a/*
echo hello

运行结果如下:

$ bash test.sh
test.sh: line 4: a: unbound variable

可以看到,因为 a 是未定义变量,脚本报错了,并且不再执行后面的语句。

3、safe -rm 替换 rm

safe-rm 是一个开源软件工具,这名字听起来就很安全嘛,所以它是用来替代不太安全的 rm。

它可以在 /etc/safe-rm.conf 中配置路径黑名单,定义哪些不能被 safe-rm 删除。

我们可以将 safe-rm 更名为 rm,假设定义了 /etc/ 无能被删除,那么删除 /etc 时就会报错:

$ rm -rf /etc/
safe-rm: skipping /etc/

4、建立回收站机制

Windows 是有回收站的,即使误删了,也可以在回收站恢复。

所以,我们也可以在 Linux 实现回收站的机制。

实现思路:

删除文件时,它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清除回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。

可以写个 Shell 脚本替换 rm 命令,或者在需要删除文件的时候使用 mv 命令将文件移动到回收站。

1:创建回收站目录

mkdir /home/.trash

2:编写 remove.sh 脚本,内容如下

TRASH_DIR="/home/.trash"
 
for i in $*;do
    STAMP=`date +%s`
    fileName=`basename  $i`
 
    #将对应文件mv 至 /trash 目录
    mv  $i  ${TRASH_DIR}/${fileName}.${STAMP}
done

3:修改 ~/.bashrc, 用我们自建的 remove.sh 替代 rm 命令

alias rm="sh /home/remove.sh"

4:设置 crontab,定期清空垃圾箱,如每天 0 点清空垃圾箱:

0 0 * * * rm -rf /home/.trash/*

5:最后,执行以下命令,使之生效

source ~/.bashrc 

5、根文件挂载成只读

在 /etc/fstab 文件,把 / 文件系统挂载成只读的方式。

其中 remount,ro,就表示只读的方式挂载。

只读的方式挂载后,进行删除操作是无法成功的:

3:总结

涉及到 rm -fr 命令的代码,要留个心眼,要反复检查,要做好预防误执行 rm -fr /*,并在测试机验证完后,再拖到实体机上跑,千万不可大意。

就算的发生了 rm -fr /*,要第一时间停掉它,并且要做到三不要:

不要慌,不要心跳爆炸(稳住稳住);

不要隐瞒删库事件(不丢人);

不要重启服务器或断开 ssh 会话(保留现场)。

只要立马掐断 rm -fr /* ,它是干不死我们的。

利用当下环境剩有的命令,冷静分析,是有机会恢复的。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

admiraldeworm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值