首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
258 阅读
2
麒麟KylinV10离线下载安装包及安装
199 阅读
3
iStoreOS上使用WireGuard
165 阅读
4
麒麟v10系统openssh升级OpenSSH_10.0p2-OpenSSL 3.4.2
62 阅读
5
UNRAID增加和缩小虚拟机虚拟磁盘大小
54 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
登录
Search
标签搜索
nginx
数据库
unraid
PVE
麒麟
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
奥黛丽·逐爱者
累计撰写
128
篇文章
累计收到
21
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
页面
Linux常用
docker常用
关于
搜索到
128
篇与
奥黛丽·逐爱者
的结果
2024-05-16
记Linux新增和挂载磁盘
User:Linux查看挂载盘Kimi:在Linux系统中,查看挂载的磁盘和分区信息可以通过多种命令实现。以下是一些常用的命令:df 命令:df 命令用于显示文件系统的磁盘空间使用情况。默认情况下,它只显示挂载点的磁盘使用百分比和已用/可用空间。df使用 -h 参数可以以人类可读的格式(例如,以 K、M、G 为单位)显示信息:df -hmount 命令:mount 命令不仅可以用于挂载文件系统,还可以列出当前挂载的信息。mount这将列出所有当前挂载的文件系统及其挂载点。lsblk 命令:lsblk 命令列出所有可用的块设备,包括它们的大小、分区、挂载点等信息。lsblk使用 -o 参数可以指定显示的字段,例如:lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINTfdisk 命令:fdisk 是一个磁盘分区表操作工具,也可以用来查看磁盘分区信息。sudo fdisk -l-l 参数列出所有磁盘的分区表,但请注意,这不会显示挂载点信息。findmnt 命令:findmnt 命令用于查找和列出已挂载的文件系统。findmnt它可以显示挂载点、源设备、文件系统类型等信息。/etc/fstab 文件:查看 /etc/fstab 文件可以了解系统启动时应该挂载的文件系统配置。cat /etc/fstab/proc/mounts 文件:这个文件包含了当前系统挂载的所有文件系统的信息。cat /proc/mounts请注意,这个文件的内容会随着系统的挂载和卸载操作实时更新。stat 命令:stat 命令可以显示关于文件或文件系统的信息。stat -f对于文件系统,-f 参数将显示文件系统的设备编号、类型、挂载点等。使用这些命令,您可以获得关于Linux系统中挂载磁盘和分区的详细信息。通常,df 和 mount 是最常用的查看磁盘挂载情况的命令。User:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 253:0 0 40G 0 disk└─vda1 253:1 0 40G 0 part /vdb 253:16 0 200G 0 diskKimi:您提供的输出来自于 lsblk 命令,它显示了系统中的块设备(通常是硬盘驱动器和分区)的列表。以下是输出中各项指标的解释:NAME:设备名称,如 vda、vda1 等。在虚拟化环境中,vda 通常表示第一个虚拟磁盘。MAJ:MIN:这是设备的主要(MAJ)和次要(MIN)号码。它们是用于在 Unix 和 Linux 系统中唯一标识设备的数字。RM:设备可移动的标记。0 表示设备不是可移动的,1 表示设备是可移动的。SIZE:设备的大小,这里显示为 40G 和 200G,表示 vda 磁盘的总容量为 40GB,而 vdb 磁盘的总容量为 200GB。RO:只读(Read Only)标记。0 表示设备是可读写的,1 表示设备是只读的。TYPE:设备类型,这里 disk 表示这是一个磁盘设备,而 part 表示这是一个分区。MOUNTPOINT:挂载点,显示了设备的挂载位置。/ 表示 vda1 分区已经挂载为根文件系统。从这个输出中,我们可以了解到:存在两个磁盘设备 vda 和 vdb。vda 磁盘的总容量为 40GB,并且它被分为一个分区 vda1,大小也是 40GB。vdb 磁盘的总容量为 200GB,目前没有显示分区信息。vda1 分区已经挂载到根目录 /,这意味着它被用作系统的根文件系统。这个输出没有显示 vdb 磁盘是否有分区或挂载点,如果 vdb 磁盘有分区并且已经挂载,您可以通过运行 lsblk 命令来查看这些信息。如果需要查看所有分区的挂载点,可以使用 df -h 命令。如果需要创建新的分区或挂载点,可以使用 fdisk、parted 或 mkfs 等工具来创建分区,然后使用 mount 命令来挂载分区。User:vdb如何挂给系统使用Kimi:要将 vdb 磁盘挂载给系统使用,您需要执行以下步骤:创建分区(如果需要):如果 vdb 磁盘还没有分区,您可以使用 fdisk 或 parted 命令来创建分区。例如,使用 fdisk 创建一个新分区:sudo fdisk /dev/vdb按照提示操作,创建新分区,写入更改并退出。格式化分区:创建分区后,您需要将其格式化为一个文件系统。例如,使用 mkfs 命令为分区创建一个 ext4 文件系统:sudo mkfs.ext4 /dev/vdb1请将 /dev/vdb1 替换为您的实际分区名称。创建挂载点:选择或创建一个目录,这将作为磁盘的挂载点。例如,创建一个新的目录 /mnt/vdb:sudo mkdir /mnt/vdb挂载分区:使用 mount 命令将分区挂载到您创建的目录:sudo mount /dev/vdb1 /mnt/vdb同样,请确保将 /dev/vdb1 替换为您的分区名称。自动挂载(可选):如果您希望在系统启动时自动挂载这个分区,您需要编辑 /etc/fstab 文件。首先,找到您的分区的 UUID:sudo blkid这将列出所有分区的 UUID。然后,将以下行添加到 /etc/fstab 文件中,将 <UUID> 替换为分区的实际 UUID:UUID=<UUID> /mnt/vdb ext4 defaults 0 2确保使用正确的文件系统类型(如 ext4、xfs 等)替换 ext4。测试挂载:您可以通过将文件复制到挂载点或在挂载点执行命令来测试挂载是否成功。卸载分区:当您完成操作后,不要忘记卸载分区:sudo umount /mnt/vdb请注意,您需要根据您的 Linux 发行版和文件系统选择合适的文件系统类型。另外,确保您对分区和挂载点有足够的了解,并且对命令行操作有一定的熟悉度。如果您不确定,请咨询有经验的系统管理员。User:Welcome to fdisk (util-linux 2.35.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Device does not contain a recognized partition table.Created a new DOS disklabel with disk identifier 0xedca3bc7.Command (m for help):Kimi:您看到的输出来自于 fdisk 工具,它用于管理磁盘分区。根据输出信息,fdisk 检测到 vdb 设备没有包含一个可识别的分区表,并已经为您创建了一个新的 DOS 磁盘标签(disklabel)。DOS 磁盘标签是一种分区表的类型,通常用于 MBR(主引导记录)分区方案。现在,您可以开始在 vdb 设备上创建新的分区。这里是一些基本的 fdisk 命令:n:创建一个新的分区。系统会询问您是要创建主分区(p)、扩展分区(e),还是逻辑分区(l)。对于大多数使用情况,选择创建主分区即可。p:打印分区表,显示现有分区的布局。d:删除一个分区。如果您需要删除已存在的分区,可以使用这个命令。t:更改分区的分区类型。这可以用来设置分区为特定的文件系统类型,如交换空间。w:将更改写入磁盘并退出。所有更改直到执行这个命令才会生效。q:不保存更改并退出 fdisk。如果您想要创建一个新的分区,可以按照以下步骤操作:输入 n 并按回车,选择分区类型(通常是 p 表示主分区)。fdisk 会询问您分区的类型。对于大多数用途,选择主分区即可。接下来,它会询问您分区的起始和结束位置。您可以接受默认值,或者手动输入分区的大小。创建分区后,输入 w 来写入更改并退出 fdisk。退出 fdisk 后,您需要格式化新分区。例如,如果分区是 vdb1,可以使用以下命令为其创建一个 ext4 文件系统:sudo mkfs.ext4 /dev/vdb1最后,您可以将新分区挂载到一个目录并开始使用它:sudo mount /dev/vdb1 /mnt/vdb请记得,创建和格式化分区将会删除分区上的所有数据。确保您已经备份了任何重要数据,或者确保磁盘上没有您需要保留的数据。User:Partition number (1-4, default 1):Kimi:当 fdisk 提示 Partition number (1-4, default 1): 时,它正在询问您想要创建或修改的分区编号。在MBR分区方案中,一个磁盘最多可以有四个主分区,或者三个主分区加一个扩展分区(扩展分区可以进一步分割为多个逻辑分区)。由于您之前收到了消息说 fdisk 已经为您的磁盘创建了一个新的 DOS 磁盘标签,这表明磁盘上还没有任何分区。因此,当提示分区编号时,您通常会输入 1,因为这是您将要创建的第一个分区。如果您只打算创建一个分区,或者您正在修改第一个分区,那么您可以:直接按回车键接受默认值 1。或者输入 1 然后按回车键。接下来,fdisk 会询问您关于分区大小和分区类型的问题。对于大多数情况,您可以接受提示时的默认建议,除非您有特定的分区大小或分区类型需求。以下是您可能遇到的后续提示:分区大小:您可以输入分区的大小,或者使用默认值。分区类型:对于 Linux 系统,通常是 p 表示主分区。分区的文件系统类型:在分区创建并格式化后,您可以选择如 ext4、xfs、ntfs 等文件系统。完成分区创建后,记得使用 w 命令将更改写入磁盘,然后退出 fdisk。之后,您可以格式化分区并将其挂载到文件系统中使用。请谨慎操作,因为对磁盘进行分区和格式化会清除磁盘上的所有数据。确保您已经备份了所有重要数据。User:First sector (2048-419430399, default 2048):Kimi:当 fdisk 命令提示 First sector (2048-419430399, default 2048): 时,它要求您指定新分区的第一个扇区的位置。这个选项允许您定义分区的起始位置,但在大多数情况下,您可以接受默认值。默认值 2048 是一个常见的起始扇区,因为它从磁盘的第一个有效数据扇区开始,跳过了引导扇区,这样可以避免与引导加载程序或MBR(主引导记录)发生冲突。在大多数情况下,接受默认值是一个好习惯,特别是如果您:不需要特定的分区大小或对齐要求。不需要为操作系统引导保留特定的扇区。如果您对分区的起始扇区有特定的需求,或者您正在尝试优化分区性能(例如,使用固态硬盘的特定扇区对齐),您可以输入一个不同的扇区号。要接受默认值,您可以:直接按回车键。或者输入 2048 然后按回车键。完成此步骤后,fdisk 将继续提示您指定分区的最后一个扇区,即分区的大小。您可以为分区指定一个大小,或者如果这是您在磁盘上创建的唯一分区,可以使用默认值让它占据所有剩余空间。请记得,在执行分区操作时,您应该小心谨慎,因为这些操作会清除磁盘上的所有数据。确保您已经备份了所有重要数据,或者确保磁盘上没有您需要保留的数据。User:Created a new partition 1 of type 'Linux' and of size 200 GiB.Command (m for help):Kimi:您已经成功创建了一个新的分区,类型为 'Linux',大小为 200 GiB。在 fdisk 提示 Command (m for help): 时,您现在有几个选择:完成分区并写入更改:如果您已经满意分区的设置,可以输入 w 来写入更改并退出 fdisk。这将把分区表写入磁盘,所有更改将生效。查看分区信息:输入 p 可以打印出当前分区表的概览,包括分区编号、起始扇区、大小和分区类型。继续创建更多分区:如果您想要在同一个磁盘上创建更多分区,可以继续输入 n 来创建新的分区。由于您已经创建了一个主分区,您可能需要创建扩展分区或逻辑分区,具体取决于您的需求。删除分区:如果新创建的分区是一个错误,或者您想要重新配置分区,可以使用 d 来删除分区,然后重新创建它。退出不保存:如果您不想保存对分区表的更改,可以输入 q 退出 fdisk 而不写入更改。获取帮助:输入 m 可以获取帮助信息,列出所有可用的 fdisk 命令。{dotted startColor="#ff6c6c" endColor="#1989fa"/}步骤 1:创建新分区(假设你想创建一个主分区)n # 新建分区 p # 主分区 1 # 分区号 1 <回车> # 默认起始扇区 <回车> # 默认结束扇区(使用整个磁盘)✅ 步骤 2:保存分区表w # 写入分区表并退出✅ 步骤 3:格式化分区(例如使用 ext4)mkfs.ext4 /dev/vdb1✅ 步骤 4:创建挂载点并挂载mkdir /mnt/newdiskmount /dev/vdb1 /mnt/newdisk✅ 步骤 5(可选):设置开机自动挂载编辑 /etc/fstab 文件,添加一行:/dev/vdb1 /mnt/newdisk ext4 defaults 0 0✅ 验证挂载是否成功df -h{dotted startColor="#ff6c6c" endColor="#1989fa"/}在写入分区表后,您需要格式化新分区并创建一个挂载点才能使用它。以下是完成分区后的步骤:格式化分区:退出 fdisk 后,确定分区的设备名称(通常是 /dev/vdb1,取决于磁盘和分区编号)。然后使用 mkfs 命令为分区创建一个文件系统:sudo mkfs.ext4 /dev/vdb1创建挂载点:创建一个目录来作为新分区的挂载点:sudo mkdir /mnt/mydisk挂载分区:使用 mount 命令将新分区挂载到您创建的目录:sudo mount /dev/vdb1 /mnt/mydisk自动挂载:为了让分区在系统启动时自动挂载,您需要编辑 /etc/fstab 文件,并添加一行配置,指定分区的 UUID、挂载点以及文件系统类型:UUID=<您的分区UUID> /mnt/mydisk ext4 defaults 0 2您可以使用 blkid 命令获取分区的 UUID。请记得,在执行分区和格式化操作时,您应该小心谨慎,因为这些操作会清除分区上的所有数据。确保您已经备份了所有重要数据。 {lamp/}
2024年05月16日
12 阅读
0 评论
0 点赞
2024-05-16
常用命令
{collapse}{collapse-item label="Nginx常用操作命令" open}# 查看 Nginx 版本 /usr/local/nginx/sbin/nginx -v # 检查配置文件 ngnix.conf 的正确性 /usr/local/nginx/sbin/nginx -t # 启动 Nginx 服务 /usr/local/nginx/sbin/nginx # 启动 Nginx 服务,-c 指定配置文件的路径 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 重新加载配置 /usr/local/nginx/sbin/nginx -s reload # 停止 Nginx 服务(快速关闭,不管有没有正在处理的请求) /usr/local/nginx/sbin/nginx -s stop # 安全退出 Nginx 服务(在退出前会完成已经接受的连接请求,比较优雅) /usr/local/nginx/sbin/nginx -s quit{/collapse-item}{collapse-item label="查看top前十"}ps aux --sort=-%mem | head{/collapse-item}{collapse-item label="查看tomcat/其它 进程"}ps -ef | grep tomcat{/collapse-item}{collapse-item label="杀死进程"}kill -9 进程号 #多的话全kill了 kill -9 `ps -ef|grep tomcat|grep -v grep|awk '{print $2}'`{/collapse-item}{/collapse}{lamp/}{timeline}{timeline-item color="#19be6b"}#设置开机自启动 systemctl enable tomcat.service #停止开机自启动 systemctl disable tomcat.service #启动Tomcat服务 systemctl start tomcat.service #查看服务当前状态 systemctl status tomcat.service #重新启动服务 systemctl restart tomcat.service #查看所有已启动的服务 systemctl list-units --type=service{/timeline-item}{timeline-item color="#19be6b"}{card-describe title="卡片描述"}#设置开机自启动 systemctl enable tomcat.service #停止开机自启动 systemctl disable tomcat.service #启动Tomcat服务 systemctl start tomcat.service #查看服务当前状态 systemctl status tomcat.service #重新启动服务 systemctl restart tomcat.service #查看所有已启动的服务 systemctl list-units --type=service{/card-describe}{/timeline-item}{timeline-item color="#19be6b"}标注{callout color="#f0ad4e"}#设置开机自启动 systemctl enable tomcat.service #停止开机自启动 systemctl disable tomcat.service #启动Tomcat服务 systemctl start tomcat.service #查看服务当前状态 systemctl status tomcat.service #重新启动服务 systemctl restart tomcat.service #查看所有已启动的服务 systemctl list-units --type=service{/callout}{/timeline}开始插入折叠面板{collapse}{collapse-item label="centos离线安装htop" open}{timeline}{timeline-item color="#19be6b"}{card-describe title="源码安装"} 1、下载 htop 源码包wget https://hisham.hm/htop/releases/2.2.0/htop-2.2.0.tar.gz2、解压源码包:tar -zxvf htop-2.2.0.tar.gz3、进入源码目录:cd htop-2.2.0/4、配置编译选项:./configure --prefix=/usr/local这里使用 --prefix 指定了安装目录,您也可以根据需要修改为其他路径。 5、编译源代码:make6、安装sudo make install{/card-describe}{card-describe title="RPM包安装"} #### 下载 htop 的 RPM 包: 您可以从 EPEL 存储库的官方网站或其他可信的软件源下载 htop 的 RPM 包。 #### 安装 RPM 包:sudo rpm -ivh htop-2.2.0-3.el7.x86_64.rpm请将 htop-2.2.0-3.el7.x86_64.rpm 替换为您下载的 RPM 包的实际文件名。{/card-describe}{/timeline-item}{timeline-item color="#19be6b"}{card-default label="默认卡片" width="100%"}12123{/card-default}{/timeline-item}{timeline-item color="#19be6b"} 正式上线{/timeline-item}{timeline-item color="#ed4014"} 删库跑路{/timeline-item}{/timeline}{/collapse-item}
2024年05月16日
5 阅读
0 评论
0 点赞
2024-05-15
Nginx日志问题
{collapse}{collapse-item label="logrotate配置分割" open}logrotate简单介绍logrotate 是一个 Linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间 / 大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。下面命令可以查看是否安装了logrotate --version/etc/logrotate.conf 是主配置文件, /etc/logrotate.d 文件夹下面是自定义的配置文件新增切割nginx日志的配置文件在 /etc/logrotate.d 目录下新增nginx文件 nano nginx_log 写入下面内容(我的日志文件目录是/usr/local/nginx/logs/)/usr/local/nginx/logs/ /usr/local/nginx/logs/*.log { daily # 按天分割 rotate 30 create sharedscripts # 所有的文件切割之后只执行一次下面脚本,通知nginx重新打开新的日志文件进行后续写入 postrotate if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` # 通过USER1信号通知nginx重新打开日志文件 fi endscript }如果报错则删掉注释这样就会每天定时分割日志了也可以手动执行命令测试一下能否正常分割日志logrotate -f /etc/logrotate.d/nginx修正配置文件后,您需要通知 logrotate 重新读取配置文件,或者重新启动 logrotate 服务。在大多数Linux系统中,您可以使用以下命令来重新启动 logrotate:sudo service logrotate restart或者,如果您使用的是基于systemd的系统,可以使用:sudo systemctl restart logrotate又或者logrotate是属于rsyslog里的其中一个服务重启的方法: CentOS6命令:service rsyslog restart CentOS7命令:systemctl restart rsyslog 另外,可以手动执行分隔命令进行测试【以nginx的为例】 logrotate -f /etc/logrotate.d/nginx确保您的 logrotate 配置文件格式正确,并且没有语法错误。您可以通过运行 logrotate -d /etc/logrotate.d/nginx_log 来测试配置文件,而不实际执行轮换,-d 参数可以输出 logrotate 执行时的调试信息。在修改配置文件并重新启动 logrotate 服务之后,错误应该不会再出现,日志文件将按照新的配置进行管理。{card-describe title="描述"}从您提供的输出信息来看,您使用了 logrotate -d /etc/logrotate.d/nginx_log 命令来以调试模式运行 logrotate,这个命令不会实际执行日志的轮换,而只是打印出它将会执行的操作。调试模式下的输出显示了以下信息:logrotate 正在读取配置文件 /etc/logrotate.d/nginx_log。logrotate 正在考虑轮换位于 /usr/local/nginx/logs/ 目录下的日志文件,具体是匹配 /usr/local/nginx/logs/*.log 的所有文件。对于每个日志文件,logrotate 检查是否满足轮换条件。在这个例子中,配置似乎是每天轮换一次日志(after 1 days (30 rotations)),意味着每天都会执行轮换。logrotate 检查了 access.log 和 error.log 文件,并且发现它们在 2024-05-15 08:30 已经被轮换过,因此它们不需要再次轮换,因为还没有到下一次轮换的时间(即还没有过去一整天)。由于没有日志文件满足轮换条件,logrotate 没有执行 postrotate 脚本。如果您希望 logrotate 实际执行轮换操作,而不是仅仅以调试模式运行,您应该使用 -v 参数(verbose,详细模式)来获取详细的输出,但不会更改实际的行为。例如:logrotate -v /etc/logrotate.d/nginx_log{/collapse-item}{collapse-item label="定时任务执行分割脚本"}创建一个sh文件,写入以下内容(个别内容根据自己nginx的情况修改)我这里的文件为 /usr/local/nginx/log_bak.sh#/bin/bash yesterday=$(date +%Y-%m-%d) #取得服务器当前时间 savepath_log=' /var/log/nginx_bak'#分割后的日志文件保存目录(注意结尾目录斜杠去掉) nglogs='/usr/local/nginx/logs' #nginx日志文件目录,具体根据实际地址替换(结尾目录斜杠去掉 以免与下面路径中的"/"重复) #判断分割日志保存目录是否存在不存在则创建 if [ ! -d ${savepath_log} ] # 注意 语句之间 空格不可省略,这是bash脚本 不是php脚本那样随和 then mkdir -p ${savepath_log} fi #通过mv命令将日志移动到分割后的日志目录里,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件。 mv ${nglogs}/access.log ${savepath_log}/access_${yesterday}.log #具体根据你的实际日志文件名路径 进行修改access.log名字 mv ${nglogs}/error.log ${savepath_log}/error_${yesterday}.log #具体根据实际日志文件名地址 修改error.log名字 mv ${nglogs}/host.access.log ${savepath_log}/host.access_${yesterday}.log kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #通知nginx重新生成新的日志添加定时任务crontab -e #后添加下面内容 59 23 * * * /usr/local/nginx/log_bak.sh(自己写的脚本的路径)这样每天的23点59就会将当天的日志进行备份,并生成新的日志文件继续记录访问日志{/collapse-item}{collapse-item label="手动切割日志"}如果您更喜欢手动管理日志,或者没有使用 logrotate,您可以编写一个自定义的脚本来切割 NGINX 日志。这个脚本可以运行 gzip 来压缩旧的日志文件,然后创建一个新的日志文件。#!/bin/bash gzip /var/log/nginx/access.log gzip /var/log/nginx/error.log touch /var/log/nginx/access.log touch /var/log/nginx/error.log chown www-data:adm /var/log/nginx/access.log /var/log/nginx/error.log路径以实际为准。{/collapse-item}{collapse-item label="docker-compose设置日志"}使用 Docker Compose 配置日志对于使用 Docker Compose 管理的应用,可以在 docker-compose.yml 文件中配置日志选项:version: '3.8' services: web: image: nginx logging: driver: "json-file" options: max-size: "10m" max-file: "3"Nginx日志文件:Nginx默认只生成两个日志文件:access.log(访问日志)和error.log(错误日志)。在docker-compose配置中,Nginx的日志通过logging选项限制了大小和数量(max-size: "5m"和max-file: "2"),因此日志文件会被轮转并保留最多2个。{/collapse-item}{collapse-item label="/dev/stdout方式显示日志"}「容器里继续写 /var/log/nginx/access.log,但宿主机看到的仍然是软链 → /dev/stdout」1.让 nginx 重新把日志写到 stdout把 nginx.conf 里那两行恢复成最初状态:access_log /dev/stdout main; # access_log /var/log/nginx/access.log main; 保存后 reload:docker exec nginx nginx -s reload2.宿主机目录里重新造回软链先停 nginx 容器(避免占用),再:docker stop nginx rm -f /home/docker/web/nginx/logs/access.log # 删掉现在的普通文件 ln -s /dev/stdout /home/docker/web/nginx/logs/access.log # 重新建软链 docker start nginx验证ls -l /home/docker/web/nginx/logs/access.log # 应该再次看到: # access.log -> /dev/stdout{/collapse-item}{/collapse}
2024年05月15日
9 阅读
0 评论
0 点赞
2024-05-14
tomcat日志切割
{collapse}{collapse-item label="源码安装方式" open}进入 tomcat bin目录下新建sh脚本[root@iZon201ihvpnoi2e3ftkphZ bin]# nano cut_log.sh填写:#!/bin/bash cd `dirname $0` DATE=`date +%Y-%m-%d` DATE30=`date -d '30 days ago' +%Y-%m-%d` cd /usr/local/tomcat/apache-tomcat-9.0.88/logs/ ls others >/dev/null 2>&1 if [ $? != 0 ];then mkdir others fi find . -type f -mtime +30 -exec rm -f {} \; cp catalina.out catalina.out.${DATE} echo "" > catalina.out给个权限 执行一下~chmod +x cut_log.sh看看日志,成功~设置定时任务crontab -e 50 23 * * * /usr/local/tomcat/apache-tomcat-9.0.88/bin/cut_log.sh #23点50分执行此脚本[root@iZon201ihvpnoi2e3ftkphZ bin]# crontab -l */5 * * * * /root/sync_sh/lssj.sh 55 23 * * * /usr/local/tomcat/apache-tomcat-9.0.88/bin/cut_log.sh [root@iZon201ihvpnoi2e3ftkphZ bin]#{/collapse-item}{collapse-item label="docker安装方式"}Tomcat日志文件:Tomcat的日志分为多种类型,每种类型都有独立的文件:Catalina日志:记录Tomcat容器的启动、停止和运行状态(如catalina.2025-06-17.log)。Host-manager/Manager日志:记录Tomcat管理界面的操作(如host-manager.2025-06-17.log和manager.2025-06-17.log)。Localhost日志:记录应用程序的调试或错误信息(如localhost.2025-06-17.log)。Access日志:记录HTTP请求的详细信息(如localhost_access_log.2025-08-05.txt)。Access日志数量多的原因:Tomcat的AccessLogValve默认配置会按日期和文件大小分割日志。例如,每天生成一个新的日志文件,或者当文件达到一定大小时分割。如果没有明确配置分割规则,可能会频繁生成新文件(例如按小时或请求量分割),导致文件数量较多。如何控制Tomcat的Access日志数量?如果需要减少Tomcat的访问日志文件数量,可以修改Tomcat的conf/server.xml文件中的AccessLogValve配置。例如:<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" fileDateFormat="yyyy-MM-dd" rotatable="true" maxDays="7"/> <!-- 保留最近7天的日志 -->通过maxDays参数可以限制日志文件的保留天数,从而减少文件数量。{/collapse-item}{/collapse}
2024年05月14日
14 阅读
0 评论
0 点赞
2024-05-14
AB目录同步问题
需求:从A目录复制数据到B目录,记录复制过的文件并生成详细日志,以后再次执行该脚本就算B目录下的文件被清空,已同步过的文件也不会再次复制。直接使用bat命令——失败Linux使用rsync——没成功问了ChatGPT要使用这个Python脚本在Windows上从A目录复制数据到B目录,并记录已复制的文件以避免重复复制,请按以下步骤操作:步骤一:安装Python如果你还没有安装Python,请先从Python官方网站下载并安装Python。步骤二:创建脚本文件1、打开一个文本编辑器(如Notepad、Notepad++或VSCode)。 2、将以下脚本代码复制并粘贴到文本编辑器中。import os import shutil import hashlib # 定义本地目录A和目标目录B local_dir = r"C:\path\to\local\A" target_dir = r"C:\path\to\target\B" log_file = "synced_files.log" def calculate_file_hash(file_path): """计算文件的SHA-256哈希值""" sha256_hash = hashlib.sha256() with open(file_path, "rb") as f: for byte_block in iter(lambda: f.read(4096), b""): sha256_hash.update(byte_block) return sha256_hash.hexdigest() def load_synced_files(log_file): """加载已同步的文件列表""" if os.path.exists(log_file): with open(log_file, "r") as f: return set(line.strip() for line in f) return set() def log_synced_files(log_file, files): """记录已同步的文件列表""" with open(log_file, "a") as f: for file in files: f.write(f"{file}\n") def sync_files(local_dir, target_dir, log_file): """同步文件到目标目录,并记录已同步的文件""" # 加载已同步文件的列表 synced_files = load_synced_files(log_file) # 获取本地目录中所有文件 all_files = set() for root, _, files in os.walk(local_dir): for file in files: full_path = os.path.join(root, file) relative_path = os.path.relpath(full_path, local_dir) file_hash = calculate_file_hash(full_path) all_files.add((relative_path, file_hash)) # 需要同步的文件 files_to_sync = {file for file in all_files if file[1] not in synced_files} # 如果没有需要同步的文件,直接返回 if not files_to_sync: print("没有新的文件需要同步。") return # 同步文件 for relative_path, file_hash in files_to_sync: source_file = os.path.join(local_dir, relative_path) target_file = os.path.join(target_dir, relative_path) target_dir_path = os.path.dirname(target_file) # 创建目标目录(如果不存在) os.makedirs(target_dir_path, exist_ok=True) # 复制文件 shutil.copy2(source_file, target_file) # 记录同步的文件 log_synced_files(log_file, [file_hash]) print(f"同步完成:{len(files_to_sync)} 个文件。") if __name__ == "__main__": sync_files(local_dir, target_dir, log_file)3、将此文件保存为sync_files.py(文件扩展名为.py)。步骤三:编辑脚本文件打开sync_files.py,编辑以下变量以匹配你的目录路径:local_dir = r"C:\path\to\local\A" # 替换为你的本地A目录路径 target_dir = r"C:\path\to\target\B" # 替换为你的目标B目录路径 log_file = "synced_files.log" # 日志文件的路径和名称步骤四:运行脚本1、打开命令提示符(可以通过按下Win + R,然后输入cmd并按回车键来打开)。 2、导航到包含sync_files.py文件的目录。例如,如果文件在桌面上,可以使用以下命令:cd C:\Users\YourName\Desktop3、运行脚本:python sync_files.py 结果脚本将从本地A目录复制文件到目标B目录,并记录已复制的文件的哈希值到synced_files.log。下次运行脚本时,它将跳过已记录的文件,避免重复复制,即使B目录中的文件被清空。注意事项确保你有足够的权限读取源目录和写入目标目录。如果脚本没有正确运行,检查目录路径是否正确,以及日志文件synced_files.log是否存在并具有写入权限。
2024年05月14日
7 阅读
0 评论
0 点赞
1
...
15
16
17
...
26