Reputation: 13173
Is it possible to run one iteration of logrotate manually without scheduling it on some interval?
Upvotes: 682
Views: 691757
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
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
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
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
Reputation: 2298
You may want to run it in verbose + force mode.
logrotate -vf /etc/logrotate.conf
Upvotes: 72
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
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