mirror of
https://github.com/systemd/systemd.git
synced 2024-11-08 11:27:32 +03:00
Merge pull request #1424 from evverx/journalctl-rotate
journalctl: add --rotate option
This commit is contained in:
commit
6ed796c827
@ -767,6 +767,12 @@
|
|||||||
complete.</para></listitem>
|
complete.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--rotate</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Asks the Journal daemon to rotate journal files.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
<xi:include href="standard-options.xml" xpointer="help" />
|
<xi:include href="standard-options.xml" xpointer="help" />
|
||||||
<xi:include href="standard-options.xml" xpointer="version" />
|
<xi:include href="standard-options.xml" xpointer="version" />
|
||||||
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
||||||
|
@ -47,7 +47,7 @@ _journalctl() {
|
|||||||
--version --list-catalog --update-catalog --list-boots
|
--version --list-catalog --update-catalog --list-boots
|
||||||
--show-cursor --dmesg -k --pager-end -e -r --reverse
|
--show-cursor --dmesg -k --pager-end -e -r --reverse
|
||||||
--utc -x --catalog --no-full --force --dump-catalog
|
--utc -x --catalog --no-full --force --dump-catalog
|
||||||
--flush'
|
--flush --rotate'
|
||||||
[ARG]='-b --boot --this-boot -D --directory --file -F --field
|
[ARG]='-b --boot --this-boot -D --directory --file -F --field
|
||||||
-o --output -u --unit --user-unit -p --priority
|
-o --output -u --unit --user-unit -p --priority
|
||||||
--vacuum-size --vacuum-time'
|
--vacuum-size --vacuum-time'
|
||||||
|
@ -121,6 +121,7 @@ static enum {
|
|||||||
ACTION_UPDATE_CATALOG,
|
ACTION_UPDATE_CATALOG,
|
||||||
ACTION_LIST_BOOTS,
|
ACTION_LIST_BOOTS,
|
||||||
ACTION_FLUSH,
|
ACTION_FLUSH,
|
||||||
|
ACTION_ROTATE,
|
||||||
ACTION_VACUUM,
|
ACTION_VACUUM,
|
||||||
} arg_action = ACTION_SHOW;
|
} arg_action = ACTION_SHOW;
|
||||||
|
|
||||||
@ -236,6 +237,7 @@ static void help(void) {
|
|||||||
" --vacuum-size=BYTES Reduce disk usage below specified size\n"
|
" --vacuum-size=BYTES Reduce disk usage below specified size\n"
|
||||||
" --vacuum-time=TIME Remove journal files older than specified date\n"
|
" --vacuum-time=TIME Remove journal files older than specified date\n"
|
||||||
" --flush Flush all journal data from /run into /var\n"
|
" --flush Flush all journal data from /run into /var\n"
|
||||||
|
" --rotate Request immediate rotation of the journal files\n"
|
||||||
" --header Show journal header information\n"
|
" --header Show journal header information\n"
|
||||||
" --list-catalog Show all message IDs in the catalog\n"
|
" --list-catalog Show all message IDs in the catalog\n"
|
||||||
" --dump-catalog Show entries in the message catalog\n"
|
" --dump-catalog Show entries in the message catalog\n"
|
||||||
@ -277,6 +279,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
ARG_FORCE,
|
ARG_FORCE,
|
||||||
ARG_UTC,
|
ARG_UTC,
|
||||||
ARG_FLUSH,
|
ARG_FLUSH,
|
||||||
|
ARG_ROTATE,
|
||||||
ARG_VACUUM_SIZE,
|
ARG_VACUUM_SIZE,
|
||||||
ARG_VACUUM_TIME,
|
ARG_VACUUM_TIME,
|
||||||
};
|
};
|
||||||
@ -330,6 +333,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
{ "machine", required_argument, NULL, 'M' },
|
{ "machine", required_argument, NULL, 'M' },
|
||||||
{ "utc", no_argument, NULL, ARG_UTC },
|
{ "utc", no_argument, NULL, ARG_UTC },
|
||||||
{ "flush", no_argument, NULL, ARG_FLUSH },
|
{ "flush", no_argument, NULL, ARG_FLUSH },
|
||||||
|
{ "rotate", no_argument, NULL, ARG_ROTATE },
|
||||||
{ "vacuum-size", required_argument, NULL, ARG_VACUUM_SIZE },
|
{ "vacuum-size", required_argument, NULL, ARG_VACUUM_SIZE },
|
||||||
{ "vacuum-time", required_argument, NULL, ARG_VACUUM_TIME },
|
{ "vacuum-time", required_argument, NULL, ARG_VACUUM_TIME },
|
||||||
{}
|
{}
|
||||||
@ -696,6 +700,10 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
arg_action = ACTION_FLUSH;
|
arg_action = ACTION_FLUSH;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ARG_ROTATE:
|
||||||
|
arg_action = ACTION_ROTATE;
|
||||||
|
break;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@ -1769,6 +1777,30 @@ static int flush_to_var(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int rotate(void) {
|
||||||
|
_cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
|
_cleanup_bus_flush_close_unref_ sd_bus *bus = NULL;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
r = bus_connect_system_systemd(&bus);
|
||||||
|
if (r < 0)
|
||||||
|
return log_error_errno(r, "Failed to get D-Bus connection: %m");
|
||||||
|
|
||||||
|
r = sd_bus_call_method(
|
||||||
|
bus,
|
||||||
|
"org.freedesktop.systemd1",
|
||||||
|
"/org/freedesktop/systemd1",
|
||||||
|
"org.freedesktop.systemd1.Manager",
|
||||||
|
"KillUnit",
|
||||||
|
&error,
|
||||||
|
NULL,
|
||||||
|
"ssi", "systemd-journald.service", "main", SIGUSR2);
|
||||||
|
if (r < 0)
|
||||||
|
return log_error_errno(r, "Failed to kill journal service: %s", bus_error_message(&error, r));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
int r;
|
int r;
|
||||||
_cleanup_journal_close_ sd_journal *j = NULL;
|
_cleanup_journal_close_ sd_journal *j = NULL;
|
||||||
@ -1804,6 +1836,11 @@ int main(int argc, char *argv[]) {
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (arg_action == ACTION_ROTATE) {
|
||||||
|
r = rotate();
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
if (arg_action == ACTION_SETUP_KEYS) {
|
if (arg_action == ACTION_SETUP_KEYS) {
|
||||||
r = setup_keys();
|
r = setup_keys();
|
||||||
goto finish;
|
goto finish;
|
||||||
|
Loading…
Reference in New Issue
Block a user