linux核心基础-基础服务管理

1、sort uniq

for i in {1..30};do echo $(expr $RANDOM / 1000 ) ;done> ceshi.txt

##sort
不加参数默认是从小到大排序(1 12 13 2  23)
-n numeric-sort		根据字符串数值比较
-r  --reverse			逆序输出排序结果

##uniq 
uniq命令的功能是对连续重复行进行一些操作,经常与 sort 命令配合使用
-c, --count 打印每行出现的次数

2、1inux能正确进行互联网dns解析的配置文件是什么

/etc/resolov.conf
在这里头写入域名服务器地址
(114.114.114.114   223.5.5.5   115.115.115.115   223.6.6.6    119.29.29.29)

3、查看域名对应的ip为多少

3.1 方法1

ping 会自动帮你去做域名查找

3.2 1inux也提供了更专业化的,域名查找,解析的命令

  • dig
    dig @223.55.5 你的域名
  • nslookup (name server look up 名称服务器查找,简称,域名查找)

3.2.1 交互式,直接输入该命令

[root@yuanlai-0224 test_tar]# nslookup

www.yuchaoit.cn
Server:
Address:
114.114.114.114
114.114.114.114#53
Non-authoritative answer:

3.2.2 非交互式

[root@muserver1 etc]# nslookup www.baidu.com

4、粉碎文件

# rm命令,删除文件,其实还是可以恢复的,现在的文件系统,都是日志型系统(你的操作,其实被系统监控,录制,做了个备份)
# rm删除数据后,磁盘其实还未立即彻底删除,根据磁盘恢复数据手段,还是可以把数据拿回来的
shred 文件名
这个命令之所以叫粉碎文件,是随机写入一堆二进制数据,导致原文件无法使用
随机写入二进制数据到文件中,比较危险,不推荐使用
[root@yuanlai-0224 test_tar]# shred gushi.txt

5、firewall防火墙

5.1简介

CentOS6x中防火墙叫做iptables
CentOS7.x 中默认使用的防火墙是firewalld,但是依然更多的是使用iptables,firewalld默认都关了。
firewalld增加了区域的概念,所谓区域是指,firewalld预先准备了几套防火墙策略的集合,类似于策略的模板,用户可以根据需求选择区域。

5.2运行模式和永久模式

运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件
永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要reload重新加载才能生效。

firewall默认采用运行模式

5.3 查看,开启和停止firewalld服务

命令:systemctl
作用:管理服务

语法:#systemctl [选项] firewalld

选项:
status:检查指定服务的运行状况
start:启动指定服务
stop:停止指定服务
restart:重启指定服务
reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)
使用systemctl来管理firewalld的服务,具体命令前面已经讲过,只是服务名换成了firewalld,这里不再赘述

5.4 管理firewall配置/命令

命令:firewall-cmd
作用:管理firewall具体配置
语法:#firewall-cmd [参数选项1] ....[参数选项n]

常用选项:

  1. 查看默认使用的区域
[root@muserver1 ~]# firewall-cmd --get-default-zone
public
  1. 查看所有可用区域
[root@muserver1 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
  1. 列出当前使用区域配置
[root@muserver1 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@muserver1 ~]#
  1. 列出所有区域的配置信息
[root@yuchao-linux01 ~]# firewall-cmd --list-all-zones

5.添加允许通过的服务或端口(python,ntp)

[root@yuchao-linux01 ~]# firewall-cmd --zone=public --add-port=80/tcp

[root@yuchao-linux01 ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 80/tcp  # 允许80端口通过了
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  1. 去掉允许通过的端口
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --remove-port=80/tcp
success
[root@yuchao-linux01 ~]# 
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports:   # 端口被移除了
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  1. 添加允许ntp的防火墙策略
[root@yuchao-linux01 ~]# firewall-cmd --permanent --add-service=ntp
success
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# firewall-cmd --reload
success
[root@yuchao-linux01 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client ntp
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


检查iptables语句
[root@yuchao-linux01 ~]# iptables -L |grep ntp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ntp ctstate NEW
  1. 永久模式参数
    permaent(永久性的)
    -- 加上这个参数,不会立即生效,重启服务后会生效
    -- 不加这个参数,会立即生效,断开连接后失效
# 永久性添加规则,并未立即生效
[root@yuchao-linux01 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client
  ports:     # 端口规则还未生成
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

# 重新加载防火墙规则
[root@yuchao-linux01 ~]# firewall-cmd --reload
success

[root@yuchao-linux01 ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@yuchao-linux01 ~]# iptables -L |grep tcp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http ctstate NEW
[root@yuchao-linux01 ~]#

6.1计划任务crontab

6.1 crontab用法

==语法:# crontab 选项==
常用选项:

-l:list,列出指定用户的计划任务列表==
-e:edit,编辑指定用户的计划任务列表,简单来说,计划任务就是一个文件==
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表

示例代码:列出当前用户的计划任务列表
[root@muserver1 ~]# crontab -l
no crontab for root

6.2 编辑计划任务(重点)

进入计划任务编辑文件

[root@yuchao-linux01 ~]# crontab -e
打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务:
计划任务的规则语法格式,以行为单位,一行则为一个计划:

==分 时 日 月 周 需要执行的命令==

例如:0 0 * * * reboot,代表每天0时0分执行reboot指令。

6.2.1 crontab语法(重点)

取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~6,0 和 7 表示星期天

四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6

并且在定时任务里,命令,请写上绝对路径。

通过whereis命令搜索 绝对路径

[root@yuchao-linux01 ~]# whereis systemctl
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

6.2.2案例

每天早上7:30起床学习
30 7 * * * 

每隔3天,夜里2天,起来学习
0 2 */3 * * 

夜里1点时候,每隔10分钟 起来吃点东西
*/10 1 * * * 

夜里1点,3点,每隔10分钟 起来吃点东西
*/10 1,3 * * * 

夜里1点到3点之间,每隔10分钟,起来吃点东西
*/10 1-3 * * *

每隔2个月的周六,夜里2点30 去见网友
30 2 * */2 6

6.3 扩展

6.3.1 crontab 权限问题

crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。

黑名单配置文件位于:/etc/cron.deny 里面写用户名,一行只能写一个

# 禁止yuchao01用户设置定时任务

[root@yuchao-linux01 ~]# vim /etc/cron.deny 
[root@yuchao-linux01 ~]# 
[root@yuchao-linux01 ~]# cat /etc/cron.deny 
yuchao01



# 切换yuchao01用户登录
[yuchao01@yuchao-linux01 ~]$ crontab -e
You (yuchao01) are not allowed to use this program (crontab)
See crontab(1) for more information

白名单还有一个配置文件,/etc/cron.allow (本身不存在,自己创建)

注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。

# 添加白名单后,会立即更新权限
[root@yuchao-linux01 ~]# echo 'yuchao01' > /etc/cron.allow


# yuchao01就可以写入了
[yuchao01@yuchao-linux01 ~]$ crontab -e

6.3.2查看计划任务文件保存路径

问题:计划任务文件具体保存在哪里呢?

答:/var/spool/cron/用户名文件中,如果使用root用户编辑计划任务,则用户文件名为root。

有图可见,该目录存放用户的定时任务信息。
# 定时任务,信息都是写在文件里的   ##crontab -e  写的文件

[root@yuchao-linux01 ~]# cat /var/spool/cron/root 
* * * * * /usr/bin/echo '超哥666' >> /tmp/chaoge.txt
[root@yuchao-linux01 ~]# 

[root@yuchao-linux01 ~]# cat /var/spool/cron/yuchao01 
* * * * * echo "666"

6.3.3 查看计划任务日志信息

问题:在实际应用中,我们如何查看定时任务运行情况?

答:通过计划任务日志,日志文件位于/var/log/cron

6.4定时任务经验总结(规范)

  • 编写定时任务要有注释说明
  • 编写定时任务路径信息尽量使用绝对路径
  • 编写定时任务命令需要采用绝对路径执行
  • /etc/crontab文件中定义了crontab可用的PATH搜索路径
  • 编写定时任务时,可以将输出到屏幕上的信息保存到黑洞中,避免占用磁盘空间
            • sh test.sh &>/dev/null
  • 或者重定向到文件中,便于排查问题
  • 定时任务中执行命令,如果产生输出到屏幕的信息,都会以邮件方式告知用户
  • /var/spool/mail/root,该日志会不断增大,占用磁盘空间
  • 关闭本地邮件服务即可,systemctl stop postfix
  • 当定时任务需要执行复杂任务的时候,需要编写为shell脚本再去运行了,注意脚本得有x权限
vim backup.sh 写入

cp -a /data /backup    
tar zcvf /backup/data.tar.gz  /data

# 写入配置文件
crontab -e 


# 这是于超老师写的备份脚本,用于定时任务
* * * * *  /bin/sh /server/scripts/backup.sh &>/dev/null

7、Linux软件包

电脑程序Program,就是某一个编程语言编写的一个代码文件,里面包含了该语言特有的指令,以及各种字符、符号。

7.1 源码包

  • 源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。

  • 计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译。

  • 编译过程耗时较长

  • 大多数用户不懂开发,编译过程中可能会有各种错误,用户无力解决。

  • 了解决使用源码包安装的问题,Linux 软件包的安装出现了使用二进制包的安装方式。

  • 系统级开发:
    C/C++:httpd、nginx
    golang:docker

  • 应用及开发:
    java:hadoop,hbase
    python:openstack
    perl
    ruby
    php

7.2 二进制包

  • 二进制包,也就是源码包经过成功编译之后产生的包。
  • 二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:
  • RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
  • DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。

7.3 rpm命令的使用

1 查询某个软件安装情况

语法:# rpm -qa | grep 软件名称
选项:
-q:查询,query
-a:全部,all
-i :显示软件包的概要信息
-v :显示安装详细过程
-h:显示安装进度
--force :强制操作
--nodeps:忽略依赖关系(不好用,容易出错)

2 卸载某个软件

语法:# rpm -e 软件的名称(建议写完整的名称,通过-qa 查询)

3 安装某个软件

命令:rpm
作用:管理rpm软件包
语法:# rpm -ivh 软件包完整路径名称

选项:
-i:install,安装
-v:显示进度条
-h:表示以"#"形式显示进度条

4 更新某个软件

语法:# rpm -Uvh 完整的安装包路径
选项:
-U:upgrade,升级
-v:表示显示进度条
-h:表示以#形式显示进度

5 查看文件所属的包名(实用)

语法:# rpm -qf 需要查询的文件路
选项:
-f 校验所属的软件包
示例代码:查询/etc/ntp.conf 属于哪个软件包?
[root@yuchao-linux01 opt]# rpm -qf /etc/ntp.conf 
ntp-4.2.6p5-28.el7.centos.x86_64

6 查询软件安装完成后,生成了哪些文件


用于查找软件安装后,默认的配置文件在哪

语法:# rpm -ql 需要查询的软件包名称
-l 显示软件包中的文件列表

rpm -ql firefox

[root@yuchao-linux01 opt]# rpm -ql firefox


查询lrzsz这个工具包,有结果就是装了,否则就是没有,或者你的软件包名字错了

lrzsz用于帮你快速拖拽,文件到linux-windows之间

rz sz两个命令

[root@yuchao-linux01 ~]# rpm -qa lrzsz
lrzsz-0.12.20-36.el7.x86_64

查询火狐浏览器装没

[root@yuchao-linux01 ~]# rpm -qa firefox
firefox-52.7.0-1.el7.centos.x86_64

#######
要使用rz、Sz命令传输文件需要给服务器安装IrzSZ:
yum -y install lrzsz
命令SZ、rz的使用方法
rz中的r意为received(接收),输入rz时,意为服务器接收文件,即将文件从本地上传到服务器。
sz中的s意为send(发送),输入sz时,意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。

posted @ 2024-05-28 20:48  lipga  阅读(40)  评论(0)    收藏  举报