运维相关日志
1月12
MinIO 服务器配置文件(config.json)存储在 --config-dir 指定的配置目录中,--config-dir 默认值为 ${HOME}/.minio(笔者的目录为 C:\Users\Administrator\.minio)。
但是从 RELEASE.2018-08-18T03-49-57Z 之后的版本开始,配置文件已迁移到存储数据的 .minio.sys/config 目录(存储后端是启动服务器时传递给 MinIO 服务器的目录)。如果使用如下命令启动 MinIO 服务:
minio.exe server D:/tmp/data
则配置文件位于 D:\tmp\data\.minio.sys\config 目录中。
注意:你可以使用 mc -h 命令查看当前 MinIO 的版本信息,如下:
D:\server\minio>mc -h
NAME:
mc - MinIO Client for cloud storage and filesystems.
...
VERSION:
RELEASE.2021-06-13T17-48-22Z
您可以使用 --config-dir 指定现有配置的位置,MinIO 会自动将 config.json 迁移到您的后端存储。您当前 --config-dir 指定的 config.json 配置文件将在成功迁移后重命名为 config.json.deprecated。
如果你的配置文件位于 C:\Users\Administrator\.minio\config.json,MinIO 会自动将 config.json 中的配置迁移到 D:\tmp\data\.minio.sys\config\config.json 文件,然后将 C:\Users\Administrator\.minio\config.json 重命名为 C:\Users\Administrator\.minio\config.json.deprecated。
此外 --config-dir 现在是一个遗留选项,计划在将来删除,因此请相应地更新您的本地启动和 ansible 脚本。使用如下命令去启动 MinIO 服务:
minio.exe server D:\tmp\data
上面命令,将创建的存储桶以及存储桶中的对象放到 D:\tmp\data 目录,并且配置信息均位于 D:\tmp\data\.minio.sys 目录。
但是从 RELEASE.2018-08-18T03-49-57Z 之后的版本开始,配置文件已迁移到存储数据的 .minio.sys/config 目录(存储后端是启动服务器时传递给 MinIO 服务器的目录)。如果使用如下命令启动 MinIO 服务:
minio.exe server D:/tmp/data
则配置文件位于 D:\tmp\data\.minio.sys\config 目录中。
注意:你可以使用 mc -h 命令查看当前 MinIO 的版本信息,如下:
D:\server\minio>mc -h
NAME:
mc - MinIO Client for cloud storage and filesystems.
...
VERSION:
RELEASE.2021-06-13T17-48-22Z
您可以使用 --config-dir 指定现有配置的位置,MinIO 会自动将 config.json 迁移到您的后端存储。您当前 --config-dir 指定的 config.json 配置文件将在成功迁移后重命名为 config.json.deprecated。
如果你的配置文件位于 C:\Users\Administrator\.minio\config.json,MinIO 会自动将 config.json 中的配置迁移到 D:\tmp\data\.minio.sys\config\config.json 文件,然后将 C:\Users\Administrator\.minio\config.json 重命名为 C:\Users\Administrator\.minio\config.json.deprecated。
此外 --config-dir 现在是一个遗留选项,计划在将来删除,因此请相应地更新您的本地启动和 ansible 脚本。使用如下命令去启动 MinIO 服务:
minio.exe server D:\tmp\data
上面命令,将创建的存储桶以及存储桶中的对象放到 D:\tmp\data 目录,并且配置信息均位于 D:\tmp\data\.minio.sys 目录。
1月12
第一步,进入/opt 目录,创建minio文件夹
cd /opt
mkdir minio
第二步,wget下载安装包:
https://dl.minio.io/server/minio/release/linux-amd64/minio
第三步,进入minio文件夹创建log文件
cd /minio
touch minio.log
第四步,赋予minio文件执行权限
chmod 777 minio
第五步,启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
这个时候我们看下面爆红的提示,说的是:
警告:控制台端点正在侦听动态端口 (39175),请使用 --console-address “:PORT” 选择静态端口。
警告:检测到默认凭据“minioadmin:minioadmin”,我们建议您使用“MINIO_ROOT_USER”和“MINIO_ROOT_PASSWORD”环境变量更改这些值
所以我们按照提示来:
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
第六步,重新启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
第七步,设置环境变量
vim /etc/profile
添加
# set minio environment
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
生效:source /etc/profile;
第 七步,设置minio后台启动(指定端口)
vim start.sh
nohup /opt/minio/minio server /opt/minio/data --console-address ":35555" > /opt/minio/minio.log 2>&1 &
('2>&1’表示现在标准输出直接输入到/opt/minio/minio.log 中,而2>&1是将标准错误重定向到标准输出,‘nohup’和末尾’&'组合使用表示脱离终端后继续执行)
cd /opt
mkdir minio
第二步,wget下载安装包:
https://dl.minio.io/server/minio/release/linux-amd64/minio
第三步,进入minio文件夹创建log文件
cd /minio
touch minio.log
第四步,赋予minio文件执行权限
chmod 777 minio
第五步,启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
这个时候我们看下面爆红的提示,说的是:
警告:控制台端点正在侦听动态端口 (39175),请使用 --console-address “:PORT” 选择静态端口。
警告:检测到默认凭据“minioadmin:minioadmin”,我们建议您使用“MINIO_ROOT_USER”和“MINIO_ROOT_PASSWORD”环境变量更改这些值
所以我们按照提示来:
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
第六步,重新启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
第七步,设置环境变量
vim /etc/profile
添加
# set minio environment
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
生效:source /etc/profile;
第 七步,设置minio后台启动(指定端口)
vim start.sh
nohup /opt/minio/minio server /opt/minio/data --console-address ":35555" > /opt/minio/minio.log 2>&1 &
('2>&1’表示现在标准输出直接输入到/opt/minio/minio.log 中,而2>&1是将标准错误重定向到标准输出,‘nohup’和末尾’&'组合使用表示脱离终端后继续执行)
12月12
让bat批处理以管理员权限运行的实现方法
有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:
在批处理开头加上:
适用于无参数
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
适用于有参数
%2 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" "^&chr(34)^&"%~1"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
更多参数的以此类推
运行批处理时多加一个参数::,这句就不会执行
为了兼容8.3短路径,可把%~0等换成%~s0等
理论上是没问题,但启动路径有时不可靠,之后可能还要pushd或cd /d
bat文件以管理员权限运行的几种方式
1、创建bat快捷方式,然后右键快捷方式-->properties-->advanced-->Run as administrator。
2、下载bat转成exe工具,将bat转成exe,然后右键exe-->properties-->Compatibility-->Run as administrator。
3、以管理员权限运行cmd,然后dos框中运行相应的bat。
有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:
在批处理开头加上:
适用于无参数
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
适用于有参数
%2 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" "^&chr(34)^&"%~1"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
更多参数的以此类推
运行批处理时多加一个参数::,这句就不会执行
为了兼容8.3短路径,可把%~0等换成%~s0等
理论上是没问题,但启动路径有时不可靠,之后可能还要pushd或cd /d
bat文件以管理员权限运行的几种方式
1、创建bat快捷方式,然后右键快捷方式-->properties-->advanced-->Run as administrator。
2、下载bat转成exe工具,将bat转成exe,然后右键exe-->properties-->Compatibility-->Run as administrator。
3、以管理员权限运行cmd,然后dos框中运行相应的bat。
12月9
想更改hosts文件添加域名与地址ip、由于hosts文件受保护并且是只读属性。因此需要先赋予权限,并取消只读属性才能正常写入
/E 编辑 ACL 而不替换。
/G 赋予指定用户访问权限。
F 完全权限。

Administrators、SYSTEM、Users(是windows用户组需要什么加什么)
attrib 是控制文件属性的
+ 添加文件属性
- 删除文件属性
R 只读文件属性
A 存档文件属性
S 系统文件属性
H 隐藏文件属性
I 无连接属性
@echo
@echo 127.0.0.1 .heckjj.com >>E:hosts(这是我们要写入的内容)
虽然脚本比较笨拙,但是亲测有效,若是找不到好的方法可以选择试一下O(∩_∩)O
======================================================================================
1、新建记事本输入一下内容
bat脚本代码如下:
set HOSTS=C:\Windows\System32\drivers\etc\hosts
echo Y|cacls %HOSTS% /E /G Administrators:F
echo Y|cacls %HOSTS% /E /G SYSTEM:F
echo Y|cacls %HOSTS% /E /G Users:F
attrib -r -h %HOSTS%
@echo
@echo.>>%HOSTS%
@echo 127.0.0.1 heckjj.com >>%HOSTS%
attrib +r +h %HOSTS%
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
2、将记事本后缀名改为.bat格式的文件,然后双击即可完成修改。
/E 编辑 ACL 而不替换。
/G 赋予指定用户访问权限。
F 完全权限。
Administrators、SYSTEM、Users(是windows用户组需要什么加什么)
attrib 是控制文件属性的
+ 添加文件属性
- 删除文件属性
R 只读文件属性
A 存档文件属性
S 系统文件属性
H 隐藏文件属性
I 无连接属性
@echo
@echo 127.0.0.1 .heckjj.com >>E:hosts(这是我们要写入的内容)
虽然脚本比较笨拙,但是亲测有效,若是找不到好的方法可以选择试一下O(∩_∩)O
======================================================================================
1、新建记事本输入一下内容
bat脚本代码如下:
set HOSTS=C:\Windows\System32\drivers\etc\hosts
echo Y|cacls %HOSTS% /E /G Administrators:F
echo Y|cacls %HOSTS% /E /G SYSTEM:F
echo Y|cacls %HOSTS% /E /G Users:F
attrib -r -h %HOSTS%
@echo
@echo.>>%HOSTS%
@echo 127.0.0.1 heckjj.com >>%HOSTS%
attrib +r +h %HOSTS%
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
2、将记事本后缀名改为.bat格式的文件,然后双击即可完成修改。
12月5
公司有个项目需要对本地hosts文件进行修改,添加一条本地域名解析记录,如果让客户去操作,很容易破坏掉原先的hosts文件,最好是能封装成一个批处理脚本,用户只需要以管理员权限运行即可,如果记录存在则替换掉。
:: 关闭命令的回显
@echo off
:: 使用前请修改域名地址和ip地址
:: 域名地址
set url=heckjj.com
:: ip地址
set ip=192.168.1.1
:: 设置hosts文件路径
set HOSTS=C:\Windows\System32\drivers\etc\hosts
:: 判断当前路径是否存在 hosts.init 文件, 不存在则备份
if not exist %HOSTS%.init (
copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成!
)
:: %date%=2022年12月04日
:: %time%= 9:12:38:96
:: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符
:: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符
:: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符
set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2%
:: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符
:: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符
:: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
:: 当 hh 小于等于 9 时, 在前面补 0
if %hh% leq 9 (set hh=0%hh:~1,1%)
ECHO.############################## 修改系统hosts解析文件 ##############################
ECHO.#
ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ###############################
set ip_domain=%ip% %url%
type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%"
if %errorlevel% == 0 (
findstr /vi "%ip_domain%" %HOSTS% > C:\tmp\hosts.tmp
type C:\tmp\hosts.tmp > %HOSTS%
del /F /A /Q C:\tmp\hosts.tmp
echo %ip_domain% 更新成功!
) else (
echo %ip_domain% 添加成功!
)
echo.>>%HOSTS%
echo %ip_domain% >> %HOSTS%
title 备份hosts文件
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm%
echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单!
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
:: 关闭命令的回显
@echo off
:: 使用前请修改域名地址和ip地址
:: 域名地址
set url=heckjj.com
:: ip地址
set ip=192.168.1.1
:: 设置hosts文件路径
set HOSTS=C:\Windows\System32\drivers\etc\hosts
:: 判断当前路径是否存在 hosts.init 文件, 不存在则备份
if not exist %HOSTS%.init (
copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成!
)
:: %date%=2022年12月04日
:: %time%= 9:12:38:96
:: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符
:: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符
:: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符
set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2%
:: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符
:: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符
:: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
:: 当 hh 小于等于 9 时, 在前面补 0
if %hh% leq 9 (set hh=0%hh:~1,1%)
ECHO.############################## 修改系统hosts解析文件 ##############################
ECHO.#
ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ###############################
set ip_domain=%ip% %url%
type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%"
if %errorlevel% == 0 (
findstr /vi "%ip_domain%" %HOSTS% > C:\tmp\hosts.tmp
type C:\tmp\hosts.tmp > %HOSTS%
del /F /A /Q C:\tmp\hosts.tmp
echo %ip_domain% 更新成功!
) else (
echo %ip_domain% 添加成功!
)
echo.>>%HOSTS%
echo %ip_domain% >> %HOSTS%
title 备份hosts文件
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm%
echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单!
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
12月4
#使用前请修改域名地址和ip地址
#域名地址
$url="heckjj.com"
#ip地址
$ip="127.0.0.1"
$hosts="$env:windir\System32\drivers\etc\hosts"
$content=Get-Content $hosts
if( ($content |?{$_ -imatch "\s$url"}) -eq $null){
Write-Host "Adding `'$ip` to `'$url`'"
"`n$ip $url" | Out-File -FilePath $hosts -Append -encoding ascii
Write-Host "Added success!"
}else{
$content=Get-Content $hosts | Where{$_.Indexof("$url") -eq -1}
Write-Host "update `'$ip` to `'$url`'"
$content+="$ip $url"
$content | Set-Content $hosts -Force
Write-Host "updated success!"
}
最终效果,第一次是增加,后面一直是替换原来的host记录,实际上是生写了,最开始的思路是找到域名所在的行删除该行,但发现行不通,根本没有获取域名所在行的方法,最后想着是通过获取文件内容时先过滤掉当前域名的记录,也就是只读取不包含该域名host记录的行,最后再追加就可以了。
#域名地址
$url="heckjj.com"
#ip地址
$ip="127.0.0.1"
$hosts="$env:windir\System32\drivers\etc\hosts"
$content=Get-Content $hosts
if( ($content |?{$_ -imatch "\s$url"}) -eq $null){
Write-Host "Adding `'$ip` to `'$url`'"
"`n$ip $url" | Out-File -FilePath $hosts -Append -encoding ascii
Write-Host "Added success!"
}else{
$content=Get-Content $hosts | Where{$_.Indexof("$url") -eq -1}
Write-Host "update `'$ip` to `'$url`'"
$content+="$ip $url"
$content | Set-Content $hosts -Force
Write-Host "updated success!"
}
最终效果,第一次是增加,后面一直是替换原来的host记录,实际上是生写了,最开始的思路是找到域名所在的行删除该行,但发现行不通,根本没有获取域名所在行的方法,最后想着是通过获取文件内容时先过滤掉当前域名的记录,也就是只读取不包含该域名host记录的行,最后再追加就可以了。
12月4
最近公司有个项目需要对本地hosts文件进行修改,添加一条本地域名解析记录,如果让客户去操作,很容易破坏掉原先的hosts文件,最好是能封装成一个批处理脚本,用户只需要以管理员权限运行,然后根据菜单选择需要执行的功能即可。
1 批处理脚本
:: 关闭命令的回显
@echo off
:: 设置hosts文件路径
set HOSTS=C:\Windows\System32\drivers\etc\hosts
:: 判断当前路径是否存在 hosts.init 文件, 不存在则备份
if not exist %HOSTS%.init (
copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成!
)
:: %date%=2022年12月04日
:: %time%= 14:45:38:96
:: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符
:: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符
:: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符
set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2%
:: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符
:: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符
:: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
:: 当 hh 小于等于 9 时, 在前面补 0
if %hh% leq 9 (set hh=0%hh:~1,1%)
GOTO MENU
:MENU
ECHO.
ECHO.############################## 修改系统hosts解析文件 ##############################
ECHO.#
ECHO.# 1.添加域名解析
ECHO.#
ECHO.# 2.编辑hosts文件
ECHO.#
ECHO.# 3.备份hosts文件
ECHO.#
ECHO.# 4.还原hosts文件
ECHO.#
ECHO.# 5.刷新dns缓存并退出
ECHO.#
ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ###############################
set /p="请输入您要操作的序号:"<nul
@set /p sel=
if "%sel%"=="1" goto add_ipdomain
if "%sel%"=="2" goto edit_hosts
if "%sel%"=="3" goto backup_hosts
if "%sel%"=="4" goto reset_hosts
if "%sel%"=="5" goto refresh_dns
PAUSE
:add_ipdomain
set /p="请输入IP地址和域名(中间以空格分隔):"<nul
@set /p ip_domain=
type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%\>"
if %errorlevel% == 0 (
echo %ip_domain% 已存在,请重新添加!&& goto MENU
) else (
echo.%ip_domain% >> %HOSTS% && echo %ip_domain% 添加成功,请按任意键返回菜单!&& pause >nul
)
goto MENU
:edit_hosts
title 编辑hosts本地域名解析文件
notepad %HOSTS%
echo 按任意键返回菜单!
pause >nul
goto MENU
:backup_hosts
title 备份hosts文件
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm%
echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单!
pause >nul
goto MENU
pause
:reset_hosts
title 还原hosts文件
copy /y %HOSTS%.init %HOSTS%
echo hosts文件已还原至初始状态,按任意键返回菜单!
pause >nul
goto MENU
:refresh_dns
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,5秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 5 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 3 127.0.0.1>nul
echo.
exit
2 使用方法
2.1 功能菜单
第一次以管理员权限运行脚本会备份一份hosts.init文件,作为hosts初始文件,方便以后还原。
2.2 添加域名解析
添加域名解析这里采用的是手动输入 IP 地址 + 域名,并且会检索hosts文件里是否已经存在对应的 IP 地址和域名,如果存在,则提示用户重新添加。
2.3 编辑 hosts 文件
这里其实就是调用记事本来打开hosts文件。
2.4 备份 hosts文件
这里的备份文件是以hosts.日期时间的文件名格式来备份的。
2.5 还原 hosts文件
还原其实就是将 hosts.init 去掉后缀名,替换掉原先的 hosts 文件。
2.6 刷新 dns 缓存并退出
在刷新 dns 前,会先将 hosts 文件中的内容打印一下,然后执行刷新 dns 命令后退出脚本。
1 批处理脚本
:: 关闭命令的回显
@echo off
:: 设置hosts文件路径
set HOSTS=C:\Windows\System32\drivers\etc\hosts
:: 判断当前路径是否存在 hosts.init 文件, 不存在则备份
if not exist %HOSTS%.init (
copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成!
)
:: %date%=2022年12月04日
:: %time%= 14:45:38:96
:: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符
:: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符
:: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符
set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2%
:: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符
:: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符
:: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
:: 当 hh 小于等于 9 时, 在前面补 0
if %hh% leq 9 (set hh=0%hh:~1,1%)
GOTO MENU
:MENU
ECHO.
ECHO.############################## 修改系统hosts解析文件 ##############################
ECHO.#
ECHO.# 1.添加域名解析
ECHO.#
ECHO.# 2.编辑hosts文件
ECHO.#
ECHO.# 3.备份hosts文件
ECHO.#
ECHO.# 4.还原hosts文件
ECHO.#
ECHO.# 5.刷新dns缓存并退出
ECHO.#
ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ###############################
set /p="请输入您要操作的序号:"<nul
@set /p sel=
if "%sel%"=="1" goto add_ipdomain
if "%sel%"=="2" goto edit_hosts
if "%sel%"=="3" goto backup_hosts
if "%sel%"=="4" goto reset_hosts
if "%sel%"=="5" goto refresh_dns
PAUSE
:add_ipdomain
set /p="请输入IP地址和域名(中间以空格分隔):"<nul
@set /p ip_domain=
type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%\>"
if %errorlevel% == 0 (
echo %ip_domain% 已存在,请重新添加!&& goto MENU
) else (
echo.%ip_domain% >> %HOSTS% && echo %ip_domain% 添加成功,请按任意键返回菜单!&& pause >nul
)
goto MENU
:edit_hosts
title 编辑hosts本地域名解析文件
notepad %HOSTS%
echo 按任意键返回菜单!
pause >nul
goto MENU
:backup_hosts
title 备份hosts文件
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm%
echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单!
pause >nul
goto MENU
pause
:reset_hosts
title 还原hosts文件
copy /y %HOSTS%.init %HOSTS%
echo hosts文件已还原至初始状态,按任意键返回菜单!
pause >nul
goto MENU
:refresh_dns
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,5秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 5 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 3 127.0.0.1>nul
echo.
exit
2 使用方法
2.1 功能菜单
第一次以管理员权限运行脚本会备份一份hosts.init文件,作为hosts初始文件,方便以后还原。
2.2 添加域名解析
添加域名解析这里采用的是手动输入 IP 地址 + 域名,并且会检索hosts文件里是否已经存在对应的 IP 地址和域名,如果存在,则提示用户重新添加。
2.3 编辑 hosts 文件
这里其实就是调用记事本来打开hosts文件。
2.4 备份 hosts文件
这里的备份文件是以hosts.日期时间的文件名格式来备份的。
2.5 还原 hosts文件
还原其实就是将 hosts.init 去掉后缀名,替换掉原先的 hosts 文件。
2.6 刷新 dns 缓存并退出
在刷新 dns 前,会先将 hosts 文件中的内容打印一下,然后执行刷新 dns 命令后退出脚本。
10月13
我的服务器配置:linux+tomcat
出现现象:Linux服务器没有崩,有浏览器中访问页面,出现无法访问的情况,没有报4xx或5xx错误(假死),并且重启tomcat后,恢复正常。
原因:tomcat默认最大连接数(线程数)200个,默认每一个连接的生命周期2小时(7200秒),tomcat使用http 1.1协议,而http1.1默认是长连接。tomcat接受处理完请求后,socket没有主动关闭,因此如果在2小时内,请求数超过200个,服务器就会出现上述假死现象。
解决方案1:及时断开socket
protocol="org.apache.coyote.http11.Http11NioProtocol"
解决方案2:修改tomcat配置文件,修改最大连接数(增大)
修改server.xml配置文件,Connector节点中增加acceptCount和maxThreads这两个属性的值,并且使acceptCount大于等于maxThreads:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" acceptCount="500" maxThreads="400" />
解决方案3:修改linux的TCP超时时间(socket生命周期)限制
vi /etc/sysctl.conf
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# 探测次数
net.ipv4.tcp_keepalive_probes=2
# 探测间隔秒数
net.ipv4.tcp_keepalive_intvl=2
编辑完 /etc/sysctl.conf,要重启network 才会生效
[root@temp /]# /etc/rc.d/init.d/network restart
出现现象:Linux服务器没有崩,有浏览器中访问页面,出现无法访问的情况,没有报4xx或5xx错误(假死),并且重启tomcat后,恢复正常。
原因:tomcat默认最大连接数(线程数)200个,默认每一个连接的生命周期2小时(7200秒),tomcat使用http 1.1协议,而http1.1默认是长连接。tomcat接受处理完请求后,socket没有主动关闭,因此如果在2小时内,请求数超过200个,服务器就会出现上述假死现象。
解决方案1:及时断开socket
protocol="org.apache.coyote.http11.Http11NioProtocol"
解决方案2:修改tomcat配置文件,修改最大连接数(增大)
修改server.xml配置文件,Connector节点中增加acceptCount和maxThreads这两个属性的值,并且使acceptCount大于等于maxThreads:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" acceptCount="500" maxThreads="400" />
解决方案3:修改linux的TCP超时时间(socket生命周期)限制
vi /etc/sysctl.conf
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# 探测次数
net.ipv4.tcp_keepalive_probes=2
# 探测间隔秒数
net.ipv4.tcp_keepalive_intvl=2
编辑完 /etc/sysctl.conf,要重启network 才会生效
[root@temp /]# /etc/rc.d/init.d/network restart
9月6
在nfs和nfs的守护进程rpcbind起来后,会由几个端口,防火墙需要打通,才能使客户端访问,否客户端列文件目录一直卡住,进不去挂载的目录。
nfs启动时会随机启动多个端口并向RPC注册,这样如果开启防火墙对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。这样设置固定端口以后即便重启机器也很方便挂载,如果不设置固定端口,机器或服务重启后之前防火墙添加的规则就失效了,
下面的是没有设置固定端口时的情况

设置固定端口:
编辑 /etc/sysconfig/nfs 文件:
vim /etc/sysconfig/nfs
在文件最后添加如下内容:
##########################分割线###############################
MOUNTD_PORT=4001
STATD_PORT=4002
LOCKD_TCPPORT=4003
LOCKD_UDPPORT=4004
RQUOTAD_PORT=4005
添加后保存退出并重启 rpcbind和nfs
systemctl restart rpcbind
systemctl restart nfs
重启服务后再查看端口:

nfs端口是2049,rpcbind的端口是111固定的,防火墙中也需要开启。
firewall-cmd --zone=public --add-port=4001-4005/tcp --permanent
firewall-cmd --zone=public --add-port=4001-4005/udp --permanent
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent
firewall-cmd --reload
nfs启动时会随机启动多个端口并向RPC注册,这样如果开启防火墙对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。这样设置固定端口以后即便重启机器也很方便挂载,如果不设置固定端口,机器或服务重启后之前防火墙添加的规则就失效了,
下面的是没有设置固定端口时的情况
设置固定端口:
编辑 /etc/sysconfig/nfs 文件:
vim /etc/sysconfig/nfs
在文件最后添加如下内容:
##########################分割线###############################
MOUNTD_PORT=4001
STATD_PORT=4002
LOCKD_TCPPORT=4003
LOCKD_UDPPORT=4004
RQUOTAD_PORT=4005
添加后保存退出并重启 rpcbind和nfs
systemctl restart rpcbind
systemctl restart nfs
重启服务后再查看端口:
nfs端口是2049,rpcbind的端口是111固定的,防火墙中也需要开启。
firewall-cmd --zone=public --add-port=4001-4005/tcp --permanent
firewall-cmd --zone=public --add-port=4001-4005/udp --permanent
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent
firewall-cmd --reload
9月6
准备工作
1.下载nfs服务(服务端机和客户端机器都需要安装)
yum -y install rpcbind nfs-utils
2.关闭防火墙
systemctl stop firewalld
setenforce 0 ;
3. 编辑配置文件
vim /etc/exports
添加内容为:
/data/file 对应的主机或IP地址 例如:/data/file 192.168.11.66/24(rw,async)
4.启动nfs服务,启动rpc服务
systemctl start rpcbind
systemctl start nfs
6、查看配置文件是否生效
showmount -e
输出如下:
Export list for mesapp1:
/data/file 192.168.11.66/24
7.客户端机先启动rpcbind服务再查看nfs服务可用目录
systemctl start rpcbind
systemctl enable rpcbind
showmount -e 192.168.1.66(服务器端IP地址)
输出如下:
Export list for 192.168.1.66:
/data/file 192.168.11.66/24
最后执行挂载命令
挂载:mount -t nfs 192.168.1.66:/data/file /data/file
异常如下:mount.nfs: No route to host
解决:
1、ping 服务器没有问题,网络是通的
2、服务端和客户端防火墙和 selinux 状态
firewall-cmd --state
显示是running
systemctl stop firewalld.service
注意:将服务器和客户端全部将防火墙关闭哦!
3.再次挂载,就OK
4.查看 showmount -e 192.168.1.66
会显示挂载的信息
1.下载nfs服务(服务端机和客户端机器都需要安装)
yum -y install rpcbind nfs-utils
2.关闭防火墙
systemctl stop firewalld
setenforce 0 ;
3. 编辑配置文件
vim /etc/exports
添加内容为:
/data/file 对应的主机或IP地址 例如:/data/file 192.168.11.66/24(rw,async)
4.启动nfs服务,启动rpc服务
systemctl start rpcbind
systemctl start nfs
6、查看配置文件是否生效
showmount -e
输出如下:
Export list for mesapp1:
/data/file 192.168.11.66/24
7.客户端机先启动rpcbind服务再查看nfs服务可用目录
systemctl start rpcbind
systemctl enable rpcbind
showmount -e 192.168.1.66(服务器端IP地址)
输出如下:
Export list for 192.168.1.66:
/data/file 192.168.11.66/24
最后执行挂载命令
挂载:mount -t nfs 192.168.1.66:/data/file /data/file
异常如下:mount.nfs: No route to host
解决:
1、ping 服务器没有问题,网络是通的
2、服务端和客户端防火墙和 selinux 状态
firewall-cmd --state
显示是running
systemctl stop firewalld.service
注意:将服务器和客户端全部将防火墙关闭哦!
3.再次挂载,就OK
4.查看 showmount -e 192.168.1.66
会显示挂载的信息