Vladimir
Vladimir

Reputation: 13173

Is it possible to run one logrotate check manually?

Is it possible to run one iteration of logrotate manually without scheduling it on some interval?

Upvotes: 682

Views: 691757

Answers (8)

Ben Aveling
Ben Aveling

Reputation: 924

Edit /var/lib/logrotate.status (or /var/lib/logrotate/logrotate.status) to reset the 'last rotated' date on the log file you want to test.

Then run logrotate YOUR_CONFIG_FILE.

Or you can use the --force flag, but editing logrotate.status gives you more precision over what does and doesn't get rotated.

Upvotes: 12

anthony
anthony

Reputation: 7875

Created a shell script to solve the problem.

https://antofthy.gitlab.io/software/#logrotate_one

This script will run just the single logrotate sub-configuration file found in "/etc/logrotate.d", but include the global settings from in the global configuration file "/etc/logrotate.conf". You can also use other otpions for testing it...

For example...

  logrotate_one -d syslog

Upvotes: 8

sandover
sandover

Reputation: 7788

logrotate -d [your_config_file] invokes debug mode, giving you a verbose description of what would happen, but leaving the log files untouched.

Upvotes: 716

wangc
wangc

Reputation: 339

Issue the following command,the way to run specified logrotate:

logrotate -vf /etc/logrotate.d/custom

Options:

-v :show the process

-f :forcing run

custom :user-defined log setting

eg: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

Upvotes: 33

vivekv
vivekv

Reputation: 2298

You may want to run it in verbose + force mode.

logrotate -vf /etc/logrotate.conf

Upvotes: 72

xxx
xxx

Reputation: 9124

If you want to force-run a single specific directory or daemon's log files, you can usually find the configuration in /etc/logrotate.d, and they will work standalone.

Keep in mind that global configuration specified in /etc/logrotate.conf will not apply, so if you do this you should ensure you specify all the options you want in the /etc/logrotate.d/[servicename] config file specifically.

You can try it out with -d to see what would happen:

logrotate -df /etc/logrotate.d/nginx

Then you can run (using nginx as an example):

logrotate -f /etc/logrotate.d/nginx

And the nginx logs alone will be rotated.

Upvotes: 147

Allen Hancock
Allen Hancock

Reputation: 579

The way to run all of logrotate is:

logrotate -f /etc/logrotate.conf

that will run the primary logrotate file, which includes the other logrotate configurations as well

Upvotes: 42

pilcrow
pilcrow

Reputation: 58741

Yes: logrotate --force $CONFIG_FILE

Upvotes: 901

Related Questions