Чтобы понять непропорциональное использование дискового пространства, часто бывает полезно начать с корневого каталога и пройти через некоторые из его самых больших дочерних директорий.
Мы можем сделать это,
То есть:
# sum up the size of all files and directories under the root filesystem
du -a -h -x / > disk_usage.txt
# display the size of root items
grep $'\t/[^/]*$' disk_usage.txt
теперь допустим, что / usr кажется слишком большим
# display the size of /usr items
grep $'\t/usr/[^/]*$' disk_usage.txt
теперь, если / usr / local подозрительно большой
# display the size /usr/local items
grep $'\t/usr/local/[^/]*$' disk_usage.txt
и так далее ...
По умолчанию kill отправляет только сигнал TERM
, по какой-то причине pcmanfm
игнорирует этот сигнал. Если вы передадите опцию -KILL to kill, то она пошлет сигнал планировщику, и процесс будет удален без возможности очистки -или апелляции.
Вам не нужны дополнительные привилегии (sudo
), чтобы убивать процессы, которыми вы владеете. sudo
может быть опасным, не используйте его только из-за разочарования.
kill по умолчанию отправляет SIGTERM. Это обрабатывается обработчиком сигналов процесса, и процесс может:
Думаю, что pcmanfm
делает что-то подобное. Вы можете найти последние два, просмотрев /proc/PID/status
, SigBlk
и SigIgn
SIGKILL (9 ), с другой стороны, не обрабатывается самим процессом, и его обработчик сигнала не может быть изменен, проигнорирован или замаскирован.
Попробуйте запустить эту программу python3 с идентификатором процесса pcmanfn
, чтобы увидеть, что именно она игнорирует или блокирует (для python 3.5):
#!/usr/bin/python3
import os
import sys
import time
import signal
def show(label, value):
ivalue = int(value, 16)
print("%s: %s:"% (label, value.strip()), end=' ')
cnt=1
while ivalue:
if ivalue & 1:
print("%s(%s)" % (signal.Signals(cnt).name, cnt), end=' ')
ivalue>>=1
cnt+=1
print()
if len(sys.argv)==1:
pid=os.getpid()
else:
pid=int(sys.argv[1])
status=open('/proc/%d/status' % (pid,)).readlines()
print("Pid: %d" % (pid,))
for line in status:
what, value = line.split(':', 1)
if what=='SigBlk':
show('Blocked', value)
elif what=='SigIgn':
show('Ignored', value)
Вы должны увидеть, есть ли там SIGTERM.