Path : /sbin/ |
|
Current File : //sbin/abrt-harvest-pstoreoops |
#! /usr/bin/python
#
# This script is meant to be run once at system startup
# It scans /sys/fs/pstore/*, reconstructs oops text(s)
# from these files, creates ABRT problem directories from them,
# then removes the files (UEFI storage is a limited resource).
#
import os
import sys
from subprocess import Popen
if __name__ == "__main__":
# need to allow setting the pstore oops storage dir
# to make this script testable
pstoredir = "/sys/fs/pstore"
dryrun = False
for arg in sys.argv:
if arg == "dryrun":
dryrun = True
continue
if arg.startswith("--pstoredir"):
pstoredir = arg.split('=')[1]
try:
os.chdir(pstoredir)
except OSError, ex:
# silently ignore if the pstore doesn't exist, because that usually
# means that we're on the system where pstore boot is not supported
sys.stderr.write("Can't chdir to {0}: {1}".format(pstoredir, ex))
sys.exit(0)
merge_status = Popen(
["-c", "abrt-merge-pstoreoops -o * | abrt-dump-oops {0}"
.format("-o" if dryrun else "-D")],
shell=True,
bufsize=-1
).wait()
if merge_status == 0:
Popen(["abrt-merge-pstoreoops -d *"], shell=True, bufsize=-1)
else:
sys.stderr.write("Failed to merge pstore oops")