shell 命令修改系统时间精确到毫秒
时间: 2023-08-05 20:59:53 浏览: 356
在大多数Linux系统中,修改系统时间需要具有root权限。你可以使用`date`命令来修改系统时间,但默认情况下,它只能精确到秒。如果需要修改系统时间精确到毫秒级别,你可以尝试使用`hwclock`命令来设置硬件时钟。
首先,确保你具有root权限。然后按照以下步骤进行操作:
1. 首先,使用以下命令将系统时间同步到硬件时钟:
```
hwclock --systohc
```
2. 接下来,将系统时间设置为你想要的精确时间,可以使用以下命令:
```
date --set="YYYY-MM-DD HH:MM:SS.sss"
```
请将 "YYYY-MM-DD HH:MM:SS.sss" 替换为你想要设置的精确时间,其中 ".sss" 表示毫秒部分。
3. 最后,使用以下命令将硬件时钟同步到系统时间:
```
hwclock --hctosys
```
请注意,在修改系统时间之前,请确保了解可能带来的后果,并仔细考虑是否真正需要修改系统时间精确到毫秒级别。同时,修改系统时间可能会影响系统和应用程序的正常运行,因此请谨慎操作。
相关问题
用linux编写一个防止ddos攻击脚本,直接给出案例,通过shell变量的形式限制每个ip每秒钟和服务器建立的最大TCP连接数,并增加日志记录功能,违反规则则要记录时间、攻击者ip、访问端口、协议、携带报文等信息保存到/home/ddos目录下,每个日志文件最大100m,以生成时间(精确到毫秒命名)
可以使用Linux的iptables命令来编写脚本来限制每个IP地址每秒建立的最大TCP连接数。
首先,可以使用以下命令来设置每个IP地址每秒最大连接数为5:
iptables -I INPUT -p tcp --syn -i eth0 -m connlimit --connlimit-above 5 -j REJECT
然后,可以使用以下命令来记录违反规则的信息:
iptables -I INPUT -p tcp --syn -i eth0 -m connlimit --connlimit-above 5 -j LOG --log-prefix "DDOS ATTACK: " --log-level 7
最后,可以使用以下命令来将日志信息保存到/home/ddos目录下,并以生成时间命名:
logrotate -s /var/log/ddos.status /etc/logrotate.d/ddos
/var/log/ddos.log {
size 100M
rotate 5
missingok
notifempty
compress
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
请注意,上述命令假设你的网卡名称是eth0,如果不是,请将其替换为你的网卡名称。
此外,上述命令将只记录TCP协议的连接请求,如果你需要记录其他协议的连接请求,请更改上述命令中的"-p tcp"参数。
一次性讲完,用linux编写一个通用的实时在后台监测防止ddos攻击脚本,每20秒钟检测一次(shell变量配置),直接给出完整的案例,无需解释,限制每个ip每秒钟和服务器建立的最大TCP连接数(shell变量配置),并增加日志记录功能,超过最大连接数则要记录时间、攻击者ip、访问端口、协议、携带报文、建立的tcp连接总数等信息保存到/home/ddos目录下(shell变量配置),每个日志文件最大100MB(shell变量配置,自动清理3天以前的日志),超过100MB则要重新生成新文件,以生成时间命名(精确到毫秒),并封禁该ip(已经封禁过的无需再次封禁),保存到/home/ddos/blackIpList.txt(shell变量配置),
以下是一个示例脚本,注意这仅仅是一个示例,并不能直接使用,需要根据实际情况进行修改:
```
#!/bin/bash
# 配置参数
check_interval=20 # 检测间隔,单位为秒
max_conn=10 # 每秒最大连接数
log_dir="/home/ddos" # 日志目录
log_size=100 # 日志文件大小,单位为MB
ban_time=3600 # 封禁时长,单位为秒
# 循环检测
while :
do
# 获取当前时间
now=`date +%s`
# 获取每个 IP 每秒建立的 TCP 连接数
# -n 指定时间间隔,单位为秒,此处为 1 秒
# -z 指定统计时间粒度,单位为秒,此处为 1 秒
# -s 指定过滤器,此处为 tcp 连接建立
# -v 指定统计值,此处为 ip 数量
# -x 指定过滤器补充信息,此处为端口
# -i 指定网卡
# -o 指定输出格式,此处为 CSV 格式
# 以上命令会输出如下数据:
# 时间戳,端口,IP地址,数量
# 其中时间戳是从 1970-01-01 00:00:00 开始的秒数
conn_data=`tcpdump -n -z 1 -s 0 -v -x -i eth0 -oX - 'tcp[tcpflags] & (tcp-syn) != 0' | awk -F"," '{print $1","$5","$6","$10}'`
# 遍历每个 IP
while read line
阅读全文
相关推荐
















