. Вы можете достичь того же результата, используя команду GDB 'dump memory' и запишите ее в / dev / null.
Вам просто нужно найти регионы в / proc / $ PID / smaps, которые нужно отменить. пример из / proc / $ PID / smaps:
02205000-05222000 rw-p 00000000 00:00 0
Size: 49268 kB
Rss: 15792 kB
Pss: 9854 kB
Shared_Clean: 0 kB
Shared_Dirty: 11876 kB
Private_Clean: 0 kB
Private_Dirty: 3916 kB
Referenced: 564 kB
Anonymous: 15792 kB
AnonHugePages: 0 kB
Swap: 33276 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
, а затем используйте режим --batch для выполнения команды gdb, чтобы вы могли использовать ее в своей функции:
[root@nunya ~]# swapon -s ; gdb --batch --pid 33795 -ex "dump memory /dev/null 0x02205000 0x05222000" ;swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 7811068 7808096 -1
[Thread debugging using libthread_db enabled]
Filename Type Size Used Priority
/dev/sda2 partition 7811068 7796012 -1
Как далеко бы
sed -rn '\#/\*\*#,\#\*\/*# {p;b}; s/([^ ]) +/\1 /g; p' file
понял? Он печатает немодифицированные строки комментариев (, не может обрабатывать комментарии вкл/выкл в той же строке, хотя )и пропускает остальную часть скрипта. Для незакомментированных строк он сжимает любые несколько пробелов, следующих за не -символом пробела (, поэтому отступ строки выходит за рамки )до одного пробела.
Наконец-то это сработало для меня:
sed -i 's/\([a-zA-Z]\+\)\( *\)\([a-zA-Z]\+\)/\1 \3/g' $1