Linux是一套基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU,可以免费使用和自由传播的类Unix操作系统。


linux能运行主要的UNIX工具软件、应用程序和网络协议,支持32位和64位硬件。继承了Unix以网络为核心的设计思想。Linux存在着许多不同的Linux版本,但都使用Linux内核。可安装在各种计算机硬件>设备中,严格来讲,Linux这个词本身只表示Linux内核,只是大家习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

常用命令

诶。。。这个地方

1、linux删除指定后缀的文件

1
find . -name "*.png" | xargs rm -rf

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部
xargs要处理的文件如果不是在结尾,需要加上 -i这个参数

2、vim编辑器下

1
cat /dev/null > a.txt

dd:删除游标所在的一整行(常用)
ndd:n为数字。删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行
d1G:删除光标所在到第一行的所有数据
dG:删除光标所在到最后一行的所有数据
d$:删除光标所在处,到该行的最后一个字符
d0:那个是数字0,删除光标所在到该行的最前面的一个字符
x,X:x向后删除一个字符(相当于[del]按键),X向前删除一个字符(相当于[backspace]即退格键)
nx:n为数字,连续向后删除n个字符

3、复制一个文件的所有内容到另一个文件

1
2
3
4
cat file1 >> file2

>>是追加到后面的意思
>是覆盖原先的文件

4、将a.txt内容清除,并且使得文件的大小为0,而不删除文件

1
cat /dev/null > a.txt

文件系统

Linux的文件系统目录结构采用分层结构

文件系统的分层结构
文件系统的分层结构

在linux中,可执行的二进制文件可以不要扩展名

权限

用户分成3类
用户(user),组(group),其他用户(other),所有用户(all)=u,g,o,a
权限也分成3类
读(read),写(write),执行权限(excute)=r,w,x,三种权限既可以单独使用也可以组合使用

文件系统的分层结构
文件系统的分层结构

比如我给文件hhardyy.txt的属主增加执行权限。
1
chmod  u+x  hhardyy.txt

将文件hhardyy.txt的属组去掉写权限,同时将其他用户设置为只有执行权限,而文件属主的权限不变。

1
chmod  g-w,o=x  hhardyy.txt

chmod的数字使用方式也是很方便的,关键是数制转换的问题。这种方式是先将每个权限位化成二进制数,其中如果某权限位是“-”则用0来表示,否则用1来表示;接着,将这9列权限分为三组(每三位一组),再将每组化成一个八进制数。例如,某文件有如下权限rwxrw-r–,则转换为二进制数为111110100,再化为八进制数则为764;反之,当看到八进制数764时也应该很快转化为相应权限。
例如,将文件hhardyy.txt的权限设置为:属主拥有全部权限,属组拥有读写权限,其他用户拥有执行权限。

1
chmod  764  hhardyy.txt

shell的爆炸艺术

Shell是指“提供使用者使用界面”的软件(命令解析器),它类似于DOS下的command.com和后来的cmd.exe,以及node的linux。
用linux带的编辑编一个shell脚本输出IT界最强的大佬Hello,world:

1
2
3
4
5
6
命令
vi hello.sh

内容
#!/bin/sh
echo “Hello,world!”

shell脚本是按行解释的,每个脚本的第一行总是以#!/bin/sh开头 。
执行shell脚本的几种方式有:
1.sh hhardyy.sh
2../hhardyy.sh
3.source hhardyy.sh or . hhardyy.sh
4.直接执行,就是给脚本hhardyy.sh增加执行权chmod a+x hhardyy.sh
也可以把命令写到shell脚本执行
比如我要挂载光驱

1
2
3
4
5
6
7
命令
vi mount.sh

内容
#!/bin/sh
mkdir -p mnt/cdrom
mount /dev/cdrom ~/mnt/cdrom

iptables防火墙

iptables是Linux上常用的防火墙软件。

1
yum install iptables    //安装

清除已有iptables规则

1
2
3
iptables -F
iptables -X
iptables -Z

开放指定的端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许访问443端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#允许ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT  #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A FORWARD -j REJECT

屏蔽IP

1
2
3
4
5
6
7
8
9
#如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过。
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP

查看已添加的iptables规则

1
2
3
4
5
iptables -L -n
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
x:在 v 的基础上,禁止自动单位换算(K、M) vps侦探
n:只显示IP地址和端口号,不将ip解析为域名
iptables -I INPUT -s 123.45.6.0/24 -j DROP

删除已添加的iptables规则

1
2
3
4
将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 8

iptables的开机启动及规则保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CentOS上可能会存在安装好iptables后,iptables并不开机自启动,可以执行一下:
chkconfig --level 345 iptables on
将其加入开机启动。
CentOS上可以执行:service iptables save保存规则。
另外更需要注意的是Debian/Ubuntu上iptables是不会保存规则的。
需要按如下步骤进行,让网卡关闭是保存iptables规则,启动时加载iptables规则:
创建/etc/network/if-post-down.d/iptables 文件,添加如下内容:
#!/bin/linux
iptables-save > /etc/iptables.rules
执行:chmod +x /etc/network/if-post-down.d/iptables 添加执行权限。
创建/etc/network/if-pre-up.d/iptables 文件,添加如下内容:
#!/bin/linux
iptables-restore < /etc/iptables.rules
执行:chmod +x /etc/network/if-pre-up.d/iptables 添加执行权限。

yum

yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
配置本地yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1、挂载DVD光盘
mount /dev/cdrom /mnt/cdrom //mnt/cdrom是我自定义的目录,挂载光驱成功之后,成功会在cdrom下面出现一个Packages文件包
2、在目录/etc/yum.repos.d/创建文件文件名(任意名).repo 
3、配置本地yum源
cd /etc/yum.repos.d/   #进入yum配置目录 
touch  centos.repo   #建立yum配置文件 
vim  centos.repo   #编辑配置文件,添加以下内容 
[centos-yum]
name=centos   #自定义名称 
baseurl=file:///mnt#本地光盘挂载路径 
enabled=1   #启用yum源,0为不启用,1为启用 
gpgcheck=0  #检查GPG-KEY,0为不检查,1为检查 
:wq! #保存退出 

4、测试使用yum命令自动安装软件
yum clean all   #清除yum缓存 
yum makecache  #缓存本地yum源中的软件包信息

这里提示一下,假如要用yum安装dhcp的时候提示失败,很可能是因为安装源是网络源,而不是挂载的本地源,这时候要把默认的网络源禁掉就可以了,所谓禁掉就是把网络源的配置文件改个名字,它找不到了本地源就生效了

把网络源文件CentOS-Base.repo改名成CentOS-Base.repo.bak
把网络源文件CentOS-Base.repo改名成CentOS-Base.repo.bak

yum(选项)(参数)

1
2
3
4
5
6
7
8
9
-h:显示帮助信息; 
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。

yum参数

1
2
3
4
5
6
7
8
9
10
11
12
13
install:安装rpm软件包; 
update:更新rpm软件包;
check-update:检查是否有可用的更新rpm软件包;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
clean:清理yum过期的缓存;
shell:进入yum的shell提示符;
resolvedep:显示rpm软件包的依赖关系;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系。

部分常用的yum命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
自动搜索最快镜像插件:yum install yum-fastestmirror 
安装yum图形窗口插件:yum install yumex
查看可能批量安装的列表:yum grouplist
安装 yum install
全部安装 yum install package1
安装指定的安装包package1 yum groupinsall group1
安装程序组group1 更新和升级 yum update
全部更新 yum update package1
更新指定程序包package1 yum check-update
检查可更新的程序 yum upgrade package1
升级指定程序包package1 yum groupupdate group1
升级程序组group1 查找和显示 yum info package1
显示安装包信息package1 yum list
显示所有已经安装和可以安装的程序包 yum list package1
显示指定程序包安装情况package1 yum groupinfo group1
显示程序组group1信息yum search string 根据关键字string查找安装包 删除程序 yum remove | erase package1
删除程序包package1 yum groupremove group1
删除程序组group1 yum deplist package1
查看程序package1依赖情况 清除缓存 yum clean packages
清除缓存目录下的软件包 yum clean headers
清除缓存目录下的 headers yum clean oldheaders
清除缓存目录下旧的 headers