linux 学习笔记日常分享

昨天知识难点概况

1.关于压缩题,理解tar和gz


演练测试:
http://yuchaoit.cn/all_nginx.tgz
[root@linux0224 test_tar]# # 看到此tgz,就得记住,它是2个打包+压缩步骤,tar + gz
[root@linux0224 test_tar]# 
[root@linux0224 test_tar]# 
[root@linux0224 test_tar]# # 万能解压命令 tar -zxvf 
[root@linux0224 test_tar]# 
[root@linux0224 test_tar]# tar -zxvf all_nginx.tgz 

# 第二条命令,分别进行先解压缩gz后缀,再拆包tar归档操作,最终得到,原本的零散文件
gzip -d all_nginx.tgz 
tar -xvf all_nginx.tar


http://yuchaoit.cn/all_nginx.tar
tar -xf all_nginx.tar

http://yuchaoit.cn/all_nginx.tar.gz
tar -zxvf all_nginx.tar.gz

http://yuchaoit.cn/nginx-logo.png.gz

[root@linux0224 test_tar]# gzip -d nginx-logo.png.gz 
[root@linux0224 test_tar]# ll
总用量 4
-rw-r--r--. 1 root root 368 1019 07:55 nginx-logo.png
[root@linux0224 test_tar]# 
[root@linux0224 test_tar]# 
[root@linux0224 test_tar]# file nginx-logo.png 
nginx-logo.png: PNG image data, 121 x 32, 1-bit colormap, non-interlaced

文件操作,测试数据
[root@linux0224 test_tar]# cat  t1.txt 
20
26
13
18
28
7
14
30
8
15
3
18
10
25
25
7
30
28
28
23
0
4
30
14
32
3
9
20
31
5


生成20个随机数
for i in {1..30};do echo $(expr $RANDOM / 1000 ) ;done> t1.txt

2.读取文件内容且倒叙排序,从小到大,从大到小, 
# sort是对文本排序的,默认是以第一位字符进行大小比较
[root@linux0224 test_tar]# cat t1.txt  | sort -n -r

3.读取文件内容,排序,再统计重复行的次数
[root@linux0224 test_tar]# cat t1.txt  | sort -n | uniq -c
      1 0
      2 3
      1 4
      1 5
      2 7
      1 8
      1 9
      1 10
      1 13
      2 14
      1 15
      2 18
      2 20
      1 23
      2 25
      1 26
      3 28
      3 30
      1 31
      1 32

4.统计文件一共有多少行
cat t1.txt |wc -l
统计文件字符数
cat t1.txt |wc -m
统计文件字节数
cat t1.txt |wc -c

5.如何查看文件的详细信息。

file t1.txt

6.给启动django的命令做一个简单的别名(aliasalias stdj='python3 manage.py runserver 0.0.0.0:8000'

取消别名
unalias stdj 

永久好使,并且别影响到被人,怎么永久添加
写入到自己的用户环境变量文件中
~/.bash_profile

7.进程查找、进程杀死
linux 可以进程找出所有进程信息的组合命令
1. ps -ef  |  grep '你要找的进程名'   # 找到的结果,去看它的pid进程号,然后kill干掉即可
2.   kill 进程pid

8.linux解析dns的命令,解析,就是将域名,解析到ip的一个操作

1. linux能正确进行互联网dns解析的文件是什么
/etc/resolov.conf ,在这里头写入域名服务器地址
(114.114.114.114   223.5.5.5  115.115.115.115 223.6.6.6 119.29.29.29)



(哥的机器 192.168.0.140 搭建dns服务端,以及有我的域名数据库)
你们所有人

/etc/resolv.conf ,写入 192.168.0.140 域名服务器地址
就可以享有,超哥的dns服务器里面,数据库中的记录了。


192.168.0.170   yjy.top    # 只想在自己本地,测一测这个域名,(/etc/hosts)

如果yjy想让全班同学,咱们这个局域网内(比如在公司的集团,局域网内,也能够实现某域名的解析)

2. 如何查看域名,对应的ip是多少?
ping 会自动帮你去做域名查找
ping baidu.com
(ping 在你本机,去测一测,你和对方的机器,是否通信,ping命令会不断的发送数据包,给对方服务器,对方如果存活,会给你响应)

3. linux也提供了更专业化的,域名查找,解析的命令

- dig

dig @223.5.5.5   你的域名


- nslookup (name server look up 名称服务器查找,简称,域名查找 )
如何用,提供了交互式(等待你输入,然后等待给结果),非交互式(命令下去,直接出结果)的2个操作

# 交互式,直接输入该命令
[root@linux0224 test_tar]# nslookup 
> www.yuchaoit.cn


Server:		114.114.114.114
Address:	114.114.114.114#53

Non-authoritative answer:
Name:	www.yuchaoit.cn
Address: 123.206.16.61



# 非交互式
[root@linux0224 test_tar]# nslookup apecome.com
Server:		114.114.114.114
Address:	114.114.114.114#53

Non-authoritative answer:
Name:	apecome.com
Address: 123.57.242.10



9.scp远程传输

windows 和linux如何传递呀
lrzsz一个
xftp一个

你的windows,你的虚机,(互相传文件,有什么限制吗?,比如穿不过去,网络不通等限制)
有,如何理解
   
       1. lrzsz,不支持直接传输零散文件,需要打包为单个文件,即可传输
   
      2.  linux打开了防火墙,禁止文件传输
	

正常情况下
	win,linux之间互传,没什么影响
	

你的linux虚拟机,和你同桌的linux虚拟机,传文件,有什么影响吗?
有
	1. 同桌不给你密码
	2. 你和同桌不在一个网段 (每个人都是NAT网段,都是自己的私有局域网)(改为桥接,在同一个网段下即可)


你的linux虚拟机(自己本地的局域网),和你的阿里云(互联网中的公网),有什么限制吗?


1.虚拟机,能找到 阿里云 
	你的虚拟机(192.168.0.xx)
	↓
	宿主机windows
	↓
	交换机,路由器(有绑定的中国移动的公网宽带ip)
	↓
	阿里云(购买阿里云时候,人家绑定了一个固定的公网ip,全世界都可以访问到的)
	
	

2. 阿里云找不到你的虚拟机 

	阿里云(购买阿里云时候,人家绑定了一个固定的公网ip,全世界都可以访问到的)
	×
	你们家,你的学校的路由器的公网ip(这里就没有)
	×
	你的虚拟机
	


先玩简单的,两个linux机器之间,传递文件
systemctl restart network # 重启network,读取网卡配置文件再生效吧!
准备虚拟机1 192.168.0.240

虚拟机2     192.168.0.158



# scp的语法(安装的,远程传输,基于ssh协议认证的传输,机器1,要传文件给机器2,需要进行ssh的账户密码认证
# 好比ssh去登录其他人的机器

# scp的语法
1. 我登录了192.168.0.240 这个机器A,把机器A的/etc/passwd文件,发给机器B  192.168.0.158,放到/opt下

语法
scp  源数据的机器   远程机器

# 把当前登录的机器的 /etc/passwd文件发给别人  
scp /etc/passwd    root@192.168.0.158:/opt

# 把自己的 /var/log/整个目录,全发过去到 /tmp/
scp -r   /var/log/     root@192.168.0.158:/tmp/


# 以登录的机器是 192.168.0.240这台
# 需求是, 把远程的数据 拿过来192.168.0.158上的/etc/passwd 拿到自己的 /opt目录下


scp 你想要的数据机器   放到那

scp   root@192.168.0.158:/etc/passwd      /opt/


# 递归的远程 拿别人的文件夹数据

scp  -r  root@192.168.0.158:/var/log      /opt/


# 课件,准备好2个linux机器(安装2个虚机,和同桌互传,改为 桥接模式)


# 练习1
# 把机器1的 /var/log/messages ,远程拷贝到机器2的/opt/下
# 把机器1的 /var/log/,远程拷贝到机器2的/opt/下

# 把机器2的 /home文件夹,全部拷贝到机器1 的 /tmp目录下。

10.粉碎文件
# rm命令,删除文件,其实还是可以恢复的,现在的文件系统,都是日志型系统(你的操作,其实被系统监控,录制,做了个备份)
# rm删除数据后,磁盘其实还未立即彻底删除,根据磁盘恢复数据手段,还是可以把数据拿回来的

shred 文件名
这个命令之所以叫粉碎文件,是随机写入一堆二进制数据,导致原文件无法使用

随机写入二进制数据到文件中,比较危险,不推荐使用
[root@linux0224 test_tar]# shred gushi.txt 

二 systemctl

systemctl 管理命令
在Centos7之前,通过service 和 chkconfig两个命令来管理服务

1.service

service负责启动,停止服务,显示服务状态

service命令对于系统服务进行管理,启动(start) 停止 (stop)
比如:
service mysqld  #打印指定服务mysqid命令行驶用帮助
service mysqld  start #启动mysqld
servie mysqld stop  # 停止mysqld
servie mysld  restart #重启mysqld

2.chkconfig

chkconfig 指定服务是不开机启动
提供了一个维护/etc/rc[0~6] d 文件夹的命令行工具,它减轻了系统直接管理这些文件夹中的符号连接的负担。chkconfig主要包括5个原始功能:为系统管理增加新的服务、为系统管理移除服务、列出单签服务的启动信息、改变服务的启动信息和检查特殊服务的启动状态。当单独运行chkconfig命令而不加任何参数时,他将显示服务的使用信息。
#chkconfig --list  :查看系统程序列表
#chkconfig httpd on :将heepd 加入开机启动
#chkconfig httpd off :关闭heepd 开机启动

从Centos7开始,统一使用systemctl来管理服务, systemctl同时具有service和chkconfig命令的功能。

systemctl 用于控制systemd系统和管理服务的
语法:systemctl [OPTIONS...] COMMAND [UNIT...]
command 选项字如下:

start:启动指定的 unit。
stop:关闭指定的 unit。
restart:重启指定 unit。
reload:重载指定 unit。
enable:系统开机时自动启动指定 unit,前提是配置文件中有相关配置。
disable:开机时不自动运行指定 unit。
status:查看指定 unit 当前运行状态。
参数:unit 是要配置的服务名称。

3.显示服务

命令:systemctl
作用:管理服务
语法:#systemctl [选项]
list-units --type service --all:列出所有服务(包含启动的和没启动的)
list-units --type service:列出所有启动的服务
区别就在于--all参数

4.查看启动和停止服务

命令:systemctl
作用:管理服务
语法:#systemctl [选项] 服务名
选项:
status:检查指定服务的运行状况
start:启动指定服务
stop:停止指定服务
restart:重启指定服务
reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)
语法
systemctl 选项  服务名
查看sshd运行状态

停止后远程连接就会断开,只能通过vmware连接

必须要重启sshd服务,才可以远程连接

5.服务持久化

所谓服务持久化,就是服务在开机的时候,是否自动启动。

命令:systemctl

作用:管理服务

语法:#systemctl [选项] 服务名

选项:

enable:指定服务开机自动启动

disable:取消服务开机自动启动

is-enabled :查看是否设置了开机自启

6.总结

centos7,用这个命令,同时对服务进行启停管理,以及开机自启
systemctl start/stop/restart/reload/enable/disable/is-enabled   服务的名

这个命令属于对centos6提供的2个命令,做了一个整合
service 
	这个命令,linux的命令,大多数都是去机器上找到某个文件,然后读取文件配置,加载功能
	service旧的命令,是默认去 /etc/init.d/目录下寻找(服务管理脚本文件)
	然后根据你的指令 service start/stop  network (/etc/init.d/network)
	
	service 服务名  启停指令
		然后会去读取 /etc/init.d目录下的脚本
	我们在用centos6的时候,自己安装了某软件,比如nginx网站,但是没有方便的启停管理脚本
	自己写nginx启停脚本,然后放到/etc/init.d/nginx
	然后就可以调用
		serivce nginx start 

	
chkconfig
两个命令整合了

现在,都用这个指令了更方便,强大

# 这个命令是去  
systemctl  启停指令  服务名  

查看网络服务状态
systemctl status network

7.理解systemctl管理脚本的流程

实践上述所说

以nginx为例,可以有2个运行方式

1.启动nginx,以命令形式运行
[root@linux0224 ~]# /usr/sbin/nginx 

2.关闭防火墙,查看nginx是否可以看到
已确认,可以看到页面

3. 关闭nginx程序
ps -ef |grep nginx
kill nginx的进程id(包工头进程id)

4.下次在运行nginx,还要吧这个流程走一遍,并且还要重新的去找进程id,判断干掉某个id

以服务管理模式运行 systemctl

简单两条命令
systemctl start nginx.serivce
systemctl stop  nginx.service
systemctl status nginx.service
要知道,这个nginx管理脚本在哪,本质上要理解,还是去执行/usr/sbin/nginx


查看nginx的管理脚本,以后我们自己安装软件,也都参照这个写法即可
cat /usr/lib/systemd/system/nginx.service

实践上述所说

以nginx为例,可以有2个运行方式

1.启动nginx,以命令形式运行
[root@linux0224 ~]# /usr/sbin/nginx 

2.关闭防火墙,查看nginx是否可以看到
已确认,可以看到页面

3. 关闭nginx程序
ps -ef |grep nginx
kill nginx的进程id(包工头进程id)

4.下次在运行nginx,还要吧这个流程走一遍,并且还要重新的去找进程id,判断干掉某个id

以服务管理模式运行 systemctl


简单两条命令
systemctl start nginx.serivce
systemctl stop  nginx.service
systemctl status nginx.service
要知道,这个nginx管理脚本在哪,本质上要理解,还是去执行/usr/sbin/nginx


查看nginx的管理脚本,以后我们自己安装软件,也都参照这个写法即可
cat /usr/lib/systemd/system/nginx.service

三 ntp时间服务部署

1.ntp时间同步服务

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
在计算机的世界里,时间非常地重要
TP就是用来解决这个问题的,NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。

它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms

2.NTP同步服务器原理

标准时间是哪里来的?

现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。

在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内

工作中,通常我们会直接使用各个组织提供的,现成的NTP服务器。

3.到哪里去找NTP服务器

NTP授时网站:http://www.ntp.org.cn/pool

4.timedatectl 命令

timedatectl(英文全拼:timedate control)命令用于在 Linux 中设置或查询系统时间、日期和时区等配置。
centos6时代,修改系统的时区、时间,需要用到
修改时间、日期、date命令
修改时区,cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改硬件时间、hwclock命令
在centos7提供了更强大的timedatectl命令,整合了时间、时区操作。

在 Linux 运维中,通常使用此命令来设置或更改当前的日期、时间和时区,或启用自动系统时钟与远程 NTP 服务器同步,以确保 Linux 系统始终保持正确的时间。

语法
timedatectl [OPTIONS...] COMMAND ...
命令command
status :显示当前的时间设置。
show :显示 systemd-timedated 的属性。
set-time TIME :设置系统时间。
set-timezone ZONE :设置系统时区。
list-timezones :显示已知时区。
set-local-rtc BOOL :控制 RTC 是否在当地时间。(BOOL 的值可以是 1 / true0 / falseset-ntp BOOL :启用或禁用网络时间同步。(BOOL 的值可以是 1 / true0 / false)
timesync-status :显示 systemd-timesyncd 的状态。
show-timesync :显示 systemd-timesyncd 的属性。


选项
-h, --help :显示帮助信息。
--version :显示软件包版本。
--no-pager :不用将输出通过管道传输到寻呼机(pager)。
--no-ask-password :不提示输入密码。
-H, --host=[USER@]HOST :在远程主机上操作。
-M, --machine=CONTAINER :在本地容器上操作。
--adjust-system-clock :更改本地 RTC 模式时调整系统时钟。
--monitor :监控 systemd-timesyncd 的状态。
-p, --property=NAME :仅显示此名称的属性。
-a, --all :显示所有属性,包括空属性。
--value :显示属性时,只打印值。

5.timedatectl实战

显示当前系统时间、日期

世界时间查询,http://www.stl56.com/shicha/

列出机器上支持的所有时区

将本地时区从上海(Asia/Shanghai)设置为阿姆斯特丹(Europe/Amsterdam)

6.timedatectl更多用法

修改时区为UTC(世界标准时间)
timedatectl set-timezone UTC

设置系统时间(格式:HH:MM:SS)
timedatectl set-time "07:25:46"

设置系统日期(格式:YYYY-MM-DD)
timedatectl set-time "2021-12-12"

设置ntp服务开启(得先安装ntp时间同步服务)
#timedatectl set-ntp true/false

修改RTC硬件时间
# timedatectl set-local-rtc 0 # 和UTC时间同步
# timedatectl set-local-rtc 1  # 和local time同步

7.时间同步操作

机器时间错乱后,可以进行

- 时间同步,搭建ntpd服务
- 时间校准,ntpdate命令

同步服务器时间方式有2 个:一次性同步手动同步、通过服务自动同步。

### 时间同步注意点(生产经验的坑)

`ntpd`在实际同步时间时是一点点的校准过来时间的,最终把时间慢慢的校正对

而`ntpdate`不会考虑其他程序是否会阵痛,直接调整时间。一个是校准时间,一个是调整时间。

因为许多应用程序依赖连续的时钟,而使用`ntpdate`这样的时钟跃变,有时候会导致很严重的问题,如数据库事务操作等。

并且,还有如下缺陷

- 安全问题
  - `ntpdate`的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。
- 太过于暴力
  - `ntpdate`是急变,是立即修改系统时间,非常依赖于时序的程序可能会出错,比如根据时间执行备份动作的脚本,或者一些监控程序。

因此,企业服务器里一般会部署ntpd服务,让服务器自动、定期的进行时间同步,且以公共时间服务器池为准,保证服务器集群的时间正确且一致。

手动同步ntpdate

该ntpdate命令需要单独安装。
yum install ntpdate -y

ntpdate使用语法
nepdate 时间服务地址:NTP中国服务器,cn.ntp.org.cn
[root@linux0224 ~]# ntpdate cn.ntp.org.cn
21 Mar 10:12:58 ntpdate[47206]: adjust time server 120.197.116.202 offset -0.000141 se
[root@linux0224 ~]# 

** 自动同步ntpd**

1.ntpd服务安装
查看是不是安装
# rpm -q ntp

[root@linux0224 ~]# rpm -q ntp
ntp-4.2.6p5-29.el7.centos.2.x86_64
[root@linux0224 ~]# 
# 如果没有安装过的话,可以执行此命令安装
[root@linux0224 ~]# yum install  ntp -y

自动同步需开启linux的ntp服务

操作命令如下
# systemctl start/stop/restart ntpd
start 启动  stop 关闭  restart 开机自动启动

每次开机,自动启动ntpd服务,就能够自动同步时间,保证服务器时间精准

关于ntpd服务,默认用的哪些时间服务器地址,配置信息在

修改 /etc/ntp.conf 配置文件,参考如下修改


3 # #系统时间与BIOS事件的偏差记录
4 driftfile /var/lib/ntp/drift
5
6 # by yuchao create ntpd.log
7 logfile /var/log/ntpd.log
8
9 # by yuchao create ntpd.pid
10 pidfile /var/run/ntpd.pid

注释掉默认的这几行
19 # Use public servers from the pool.ntp.org project.
20 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
21 #server 0.centos.pool.ntp.org iburst
22 #server 1.centos.pool.ntp.org iburst
23 #server 2.centos.pool.ntp.org iburst
24 #server 3.centos.pool.ntp.org iburst

添加新的互联网中ntp服务器
# prefer表示为优先,表示本机优先同步该服务器时间
# 阿里云的延迟明显很低 https://help.aliyun.com/document_detail/92704.html

server times.aliyun.com iburst prefer
server ntp.aliyun.com iburst
server cn.pool.ntp.org iburst



添加新的ntp服务器地址,参数解释 iburst,当某一个ntp挂掉时,向它发送一些数据包,检测是否挂掉。


########## 参数解释
ntpd.conf配置文件采用restrict实现权限控制

Restrict [IP] mask [netmask_IP] [parameter]

Parameter 的
ignore :拒绝所有类型的NTP联机。
nomodify: 客户端不能使用ntpc与ntpq这两个程序来修改服务器的时间参数,但客户端可透过这部主机来进行网络校时;
noquery:客户端不能够使用ntpc与ntpq等指令来查询时间服务器,不提供NTP的网络校时。
notrap:不提供trap 这个运程事件登入的功能。
notrust:拒绝没有认证的客户端。
Kod:kod技术可以阻止“Kiss of Death “包对服务器的破坏。
Nopeer:不与其他同一层的NTP服务器进行时间同步。

利用server 设定上层NTP服务器,格式如下:
server [IP or hostname] [prefer]

参数主要如下:
perfer:表示优先级最高
burst :当一个运程NTP服务器可用时,向它发送一系列的并发包进行检测。
iburst :当一个运程NTP服务器不可用时,向它发送一系列的并发包进行检测。

用法如
server times.aliyun.com iburst prefer # prefer表示为优先,表示本机优先同步该服务器时间
server ntp.aliyun.com iburst
server cn.pool.ntp.org iburst


设置系统时间和硬件时间同步

实现clock时间与system时间同步,配置/etc/sysconfig/ntpd文件

ntp服务,默认只会同步系统时间。

如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 `SYNC_HWCLOCK=yes`这样,就可以让硬件时间与系统时间一起同步。

cat /etc/sysconfig/ntpd

Command line options for ntpd

OPTIONS="-g"
SYNC_HWCLOCK=yes

![](https://img2022.cnblogs.com/blog/2794943/202203/2794943-20220321220345601-1512093585.png)
**启动ntpd服务**

启动ntpd程序
[root@linux0224 ~]# systemctl start ntpd

检查ntpd运行后,生成的相关文件
[root@linux0224 ~]# ll /var/log/ntpd.log
-rw-r--r-- 1 root root 864 Mar 17 18:25 /var/log/ntpd.log
[root@linux0224 ~]# ll /var/run/ntpd.pid
-rw-r--r-- 1 root root 4 Mar 17 18:25 /var/run/ntpd.pid

posted @   linux小白224  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示