


Linux server automatically cuts and cleans logs linux system how to read linux linux tutorial
Requirements
Since nginx logs will continue to grow, we need to cut the logs ourselves to facilitate management. We need to achieve the following results:
- Automatically cut logs by date, and the minimum unit is days.
- When the total amount of logs exceeds a certain amount, the logs will be automatically and directly cleared, and the total amount cannot exceed 1000MB.
- Write it into the crontab scheduled task.
Analysis
- nginx log directory contains access.log and error.log respectively. To automatically cut logs according to date, you need to save daily logs in the format of "yyyymmdd_access/error.log" and rename each log with mv. One day's worth of log files is enough.
- Cleaning logs is simple. You only need to determine the size of this folder, and then clean up the log files before a certain date.
- The crontab task is also relatively simple, details can be found here.
- The key to the problem is that after renaming yesterday’s log file with mv, nginx will still write logs to the renamed file (such as access_20160409.log). Our purpose is to make nginx regenerate a new one. Log file (access.log) and write.
-
As we all know, everything under the Linux system is a file, so each process has its own file descriptor, and the nginx process writes its own file descriptor into nginx.pid. We need to tell nginx, Let it reopen a new log file (the configuration details of the log file can be seen here. Simply put, it is what the log records.) So we need this command:
kill -USR1 `cat ${pid_path}`
The meaning of this instruction is: first cat to the pid of nginx, which is an integer, and then send the signal USR1 to this process. After the nginx process receives this signal, it will reopen a new log file according to the configuration, and Log writing.
implementation
script cut_nginx_log.sh:
<code><span>#!/bin/bash</span> log_path=/path/to/nginx/ pid_path=/path/to/nginx.pid <span>#清理掉指定日期前的日志</span> DAYS=<span>30</span><span>#生成昨天的日志文件</span> mv <span>${log_path}</span>access.log <span>${log_path}</span>access_$(date <span>-d</span><span>"yesterday"</span> +<span>"%Y%m%d"</span>).log mv <span>${log_path}</span>error.log <span>${log_path}</span>error_$(date <span>-d</span><span>"yesterday"</span> +<span>"%Y%m%d"</span>).log kill -USR1 `cat <span>${pid_path}</span>` <span>#文件夹大小</span> size=du -m <span>-s</span><span>${log_path}</span><span>if</span> [size <span>-gt</span><span>1000</span>];<span>then</span> find <span>${logs_path}</span> -name <span>"access_*"</span> -type f -mtime +<span>$DAYS</span> -exec rm {} \; find <span>${logs_path}</span> -name <span>"error_*"</span> -type f -mtime +<span>$DAYS</span> -exec rm {} \; <span>fi</span></code>
added to crontab:
(Automatically executed at midnight every day)
<code>crontab -e <span>0</span><span>0</span> * * * /path/<span>to</span>/<span>script</span></code>
This has solved the problem of automatically cutting and cleaning logs. If you have any questions, please feel free to ask.
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });The above introduces the automatic cutting and cleaning of logs on Linux servers, including Linux content. I hope it will be helpful to friends who are interested in PHP tutorials.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

VS Code system requirements: Operating system: Windows 10 and above, macOS 10.12 and above, Linux distribution processor: minimum 1.6 GHz, recommended 2.0 GHz and above memory: minimum 512 MB, recommended 4 GB and above storage space: minimum 250 MB, recommended 1 GB and above other requirements: stable network connection, Xorg/Wayland (Linux)

Although Notepad cannot run Java code directly, it can be achieved by using other tools: using the command line compiler (javac) to generate a bytecode file (filename.class). Use the Java interpreter (java) to interpret bytecode, execute the code, and output the result.

The five basic components of the Linux system are: 1. Kernel, 2. System library, 3. System utilities, 4. Graphical user interface, 5. Applications. The kernel manages hardware resources, the system library provides precompiled functions, system utilities are used for system management, the GUI provides visual interaction, and applications use these components to implement functions.

The reasons for the installation of VS Code extensions may be: network instability, insufficient permissions, system compatibility issues, VS Code version is too old, antivirus software or firewall interference. By checking network connections, permissions, log files, updating VS Code, disabling security software, and restarting VS Code or computers, you can gradually troubleshoot and resolve issues.

VS Code is available on Mac. It has powerful extensions, Git integration, terminal and debugger, and also offers a wealth of setup options. However, for particularly large projects or highly professional development, VS Code may have performance or functional limitations.

Visual Studio Code (VSCode) is a cross-platform, open source and free code editor developed by Microsoft. It is known for its lightweight, scalability and support for a wide range of programming languages. To install VSCode, please visit the official website to download and run the installer. When using VSCode, you can create new projects, edit code, debug code, navigate projects, expand VSCode, and manage settings. VSCode is available for Windows, macOS, and Linux, supports multiple programming languages and provides various extensions through Marketplace. Its advantages include lightweight, scalability, extensive language support, rich features and version

To view the Git repository address, perform the following steps: 1. Open the command line and navigate to the repository directory; 2. Run the "git remote -v" command; 3. View the repository name in the output and its corresponding address.

The main uses of Linux include: 1. Server operating system, 2. Embedded system, 3. Desktop operating system, 4. Development and testing environment. Linux excels in these areas, providing stability, security and efficient development tools.
