Aqui está uma solução que gera uma contagem do número de transações não concluídas:
find /var/lib/yum -maxdepth 1 -type f -name 'transaction-all*' -not -name '*disabled' -printf . | wc -c
De acordo com o código-fonte para yum-complete-transactions
de yum-utils
, todos os arquivos /var/lib/yum/transaction-all*
são contados como transações não-fundidas ...
def find_unfinished_transactions(yumlibpath='/var/lib/yum'):
"""returns a list of the timestamps from the filenames of the unfinished
transactions remaining in the yumlibpath specified.
"""
timestamps = []
tsallg = '%s/%s' % (yumlibpath, 'transaction-all*')
#tsdoneg = '%s/%s' % (yumlibpath, 'transaction-done*') # not used remove ?
tsalls = glob.glob(tsallg)
#tsdones = glob.glob(tsdoneg) # not used remove ?
for fn in tsalls:
trans = os.path.basename(fn)
timestamp = trans.replace('transaction-all.','')
timestamps.append(timestamp)
timestamps.sort()
return timestamps
... exceto os arquivos que terminam com disabled
:
times = []
for thistime in find_unfinished_transactions(self.conf.persistdir):
if thistime.endswith('disabled'):
continue
# XXX maybe a check here for transactions that are just too old to try and complete?
times.append(thistime)
if not times:
print "No unfinished transactions left."
sys.exit()
Infelizmente, o último código está dentro da função main()
de yum-complete-transaction.py
e não pode ser chamado de forma independente. Se esse código fosse mais modularizado, seria possível escrever um script Python que analise com mais precisão as transações não concluídas do que o pipeline de shell fornecido acima.