특정 형식의 여러 파일을 한 번에 삭제

특정 형식의 여러 파일을 한 번에 삭제

우리는 로그인 호스트에서 freenx-server를 사용하고 사용자는 NoMachine 클라이언트를 통해 터미널에서 액세스합니다. freenx와 관련된 많은 버그와 우리 예산이 전체 상용 버전을 허용하지 않는다는 사실로 인해 연결이 종료된 후 (종종 의도하지 않게) 정리되지 않을 때 일부 사용자가 여러 세션 숙취를 겪게 됩니다. 다음은 /etc/nxserver.log에서 발췌한 샘플입니다.

Display Type             Session ID                       Options  Depth Screen         Status      Session Name
------- ---------------- -------------------------------- -------- ----- -------------- ----------- ------------------------------
33091   unix-gnome       189E20515FC5624507CAF25C836FB426 --D--PSA    24 885x843        Suspended   Connection to NXHost11 (user5) (Shadowed)
33053   unix-gnome       1DBD1E1131156842D72376675CE33E89 --D--PSA    24 1920x1123      Suspended   Connection to NXHost11 (user5) (Shadowed)
33111   unix-gnome       385B87A23EA908C0B4C6D00806D063B6 --D--PSA    24 871x538        Suspended   Connection to NXHost11 (user5) (Shadowed)
33082   unix-gnome       4D30B996528B752BFB1DE30240659230 --D--PSA    24 871x734        Running     Connection to NXHost11 (user5) (Shadowed)
33057   unix-gnome       57904D3FF28785366D962CDA35CBC6D4 --D--PSA    24 871x555        Running     Connection to NXHost11 (user5) (Shadowed)
33044   unix-gnome       6E338B9EE71D55DE4873ED83FCCB0AD9 --D--PSA    24 871x538        Suspended   Connection to NXHost11 (user5) (Shadowed)
33112   unix-gnome       8B2C9442496D09EFA0B78A13239D4EA0 --D--PSA    24 871x696        Suspended   Connection to NXHost11 (user5) (Shadowed)
33110   unix-gnome       8FD5158542B616E6B9B05B4E2425A6AF --D--PSA    24 871x831        Suspended   Connection to NXHost11 (user5) (Shadowed)
33014   unix-gnome       933CD67071697FBDC63D435E954BC8D6 --D--PSA    24 871x538        Running     Connection to NXHost11 (user5) (Shadowed)
33072   unix-gnome       B07D38F59367CE02ECA445B6EBBF84A1 --D--PSA    24 1138x667       Running     Connection to NXHost11 (user5) (Shadowed)
33000   unix-gnome       B58A633707EEC0C59C8A51EC9D688D3C --D--PSA    24 1920x1123      Running     Connection to NXHost11 (user5) (Shadowed)
33069   unix-gnome       BB78D40014DE5CF2A706536FF76FCFD8 --D--PSA    24 871x802        Suspended   Connection to NXHost11 (user5) (Shadowed)
33108   unix-gnome       C57D24C4AAC14F839E0A8C6B6C83D24E --D--PSA    24 1920x1123      Suspended   Connection to NXHost11 (user5) (Shadowed)
33070   unix-gnome       F90462D7CCEC82D5DDDA1E8C2CCE78E4 --D--PSA    24 1168x909       Suspended   Connection to NXHost11 (user5) (Shadowed)

사용자의 클라이언트가 계속 정지되지 않도록 세션을 삭제하려면 수동으로 삭제해야 /var/lib/nxserver/db/running/하지만 다른 형식으로 삭제해야 합니다.

[root@NXHost11 running]# pwd
/var/lib/nxserver/db/running
[root@NXHost11 running]# ls
sessionId{095675CAD6805301A215278C29E186F5}  sessionId{84A166F4F3D0B743357FA37751BDA786}
sessionId{0FA3E7C0B2914C66B8E468BE646D88F7}  sessionId{8B2C9442496D09EFA0B78A13239D4EA0}
sessionId{104750C53E17F5B87A9BFBC1E966B8D7}  sessionId{8CC40155C71AE6E7F73365DAFDCD2349}
sessionId{14B7F108B0A13635B7D697B26427D856}  sessionId{8ECBE26B9D5C10C44192C150FDA80158}
sessionId{15782E405134B2CF3BD09821CC3DC55C}  sessionId{8FADEDAE322A31585EB0DD8A30AB0285}
sessionId{180CA97293F95E625F12894B78FE100B}  sessionId{8FD5158542B616E6B9B05B4E2425A6AF}
sessionId{189E20515FC5624507CAF25C836FB426}  sessionId{92BCB8BA457267750FFE862EEB3C8CE6}
sessionId{18F86BA13166B94D0A80F10E3D3F220F}  sessionId{933CD67071697FBDC63D435E954BC8D6}
sessionId{195E394D40C21178D0ED4E5198B90792}  sessionId{9400C9D9D16CC0D4254DFAC45C9A52C9}
sessionId{1CD93CE30AD76937710823D0FAE15828}  sessionId{95DE940721837DF10BE3FEB1535DC78A}
sessionId{1DBD1E1131156842D72376675CE33E89}  sessionId{9A2A5A849295FC2EC4A9B7E27B53CBF7}
sessionId{1E1B5C326321775CCA05F2752CE17A8B}  sessionId{9D565E61FA3B1D81F9F1A0B185A0EC83}
sessionId{1FE7FD8EC70DC99652F214A3B5E905D1}  sessionId{A5877C91B948DFC24AF86EFB2495E527}
sessionId{22FAD34C0CC63CD959204669D8FDD9F0}  sessionId{A64443BB165B532521741D5D8F19EFAB}
sessionId{272CF217D5E8F56973743F86CAAF94BC}  sessionId{ABDC93271DF58FCE7DA7DBE7500C21B3}
sessionId{27FF7291F20965E10272A39B1FB8E4DC}  sessionId{AF6B1A42DD47C25FD176E60231A90DAD}
sessionId{2E7F640462E924284B079E10CC0E2E23}  sessionId{B07D38F59367CE02ECA445B6EBBF84A1}
sessionId{330CB4473B1AF6C948F2BFB9BDD2BADB}  sessionId{B2D860333DDD3B7FF35EA48BFF9ABD00}
sessionId{385B87A23EA908C0B4C6D00806D063B6}  sessionId{B42E37E4785B42342C4EB009D74B4EA0}
sessionId{389242121CE6E206584C2A45E236ABFF}  sessionId{B58A633707EEC0C59C8A51EC9D688D3C}
sessionId{3C4884BB99ADFF1FA18B039E88A864D1}  sessionId{B6C3CDE47C2371972A7536B854A931F4}
sessionId{3FED31A80C56BA9B038A6A765AED0C38}  sessionId{B779C01B1F1915E571B1639A481E9848}
sessionId{400753DEC565BB0DB52ED904137C463F}  sessionId{BB78D40014DE5CF2A706536FF76FCFD8}
sessionId{421C53FC39AE9D79E60E6055D2FC7DE8}  sessionId{C0740993AD5429567243033DD5451B0F}
sessionId{42F76BBDCE57874C8E3A0109E61BE37B}  sessionId{C0B5C4E91BFFC94A2ED8C399ADD264E4}
sessionId{43DBB2733414428C80DD68FA87D7C5B7}  sessionId{C57D24C4AAC14F839E0A8C6B6C83D24E}
sessionId{46A37999D33B0D66026C48D6D9C7B90A}  sessionId{C605F9961D8C4C6511CE11F375E2DAD2}
sessionId{4D30B996528B752BFB1DE30240659230}  sessionId{CD76B8B7119293B2CA6164D621BCA062}
sessionId{57904D3FF28785366D962CDA35CBC6D4}  sessionId{DAAA94C7D01E099A1D566AF0E44B23E4}
sessionId{58BFD388FBED5D39EED5D03A6BEB83B7}  sessionId{DBAE1C4AD9B0CEB956711384B9A4C503}
sessionId{5DC416CBE36DD68259246F21C4D12C63}  sessionId{DF866B06E27911C90130A4AC7F24E03C}
sessionId{6284D3EE9771A085520C12C5C089CB63}  sessionId{E112F0415D4B2B47D892FA16D83819AE}
sessionId{63F6B34AF4DD407E46CAB8D52EE1B00D}  sessionId{E767F74579682E357BCF9E8635658847}
sessionId{64CD7EC1A6156DFD992DCF6AA0D3D959}  sessionId{EB78959FD59424DAF2C965388A056AE3}
sessionId{6D570D2998E544DD2E2B4F68A9185377}  sessionId{ED560BFC6D38D0946AF3E0A453E8EBC2}
sessionId{6E338B9EE71D55DE4873ED83FCCB0AD9}  sessionId{EE11025659E3D66007357A870FB973AA}
sessionId{70556E711755D613445D72F505F5ACAA}  sessionId{EF819D2926EFF1DA0E0208578D282D28}
sessionId{7706DEA73E98C5997D61CA6BE49D2313}  sessionId{F1141CC7C189F45D4C6E1B5A805BA849}
sessionId{7723BB4A0C5CCE18A67D5D64235357AC}  sessionId{F5E6EC0AB1E015AE187CC30412291A70}
sessionId{787D6CE3EBA641706F3E07DD61159B24}  sessionId{F90462D7CCEC82D5DDDA1E8C2CCE78E4}
sessionId{7BD83901652D8F26B9D4B128D0021344}  sessionId{F904BF11478F62FF368ACAA9978F365B}
sessionId{8100B0CADB1369EB9573E9B986758545}  sessionId{F91EECDB9A7B9298763F3DB439205CFC}

또 다른 문제는 동일한 호스트에서 내가 닫을 수 없는 NoMachine 세션을 실행하는 다른 사용자가 있다는 것입니다. 또는 세션의 전체 디렉토리를 RM하기만 하면 충분히 쉽습니다.

따라서 문제는 각 개별 세션 ID를 수동으로 삭제하는 것 외에
rm sessionId{pasteletternumbercombinationhere}다른 사용자 세션에 영향을 주지 않고 이를 수행할 수 있는 더 쉬운 방법이 있느냐는 것입니다. freenx의 "핸들러" 메커니즘이 소유권을 갖고 모든 sessionID 파일이 사용자 이름 대신 nx:nx이기 때문에 ps는 내가 스크립팅할 수 있는 정보를 표시할 수 없는 것 같습니다.

답변1

제가 이해한 것이 정확하길 바랍니다. sessionID가 일시 중지된 것으로 나열된 모든 파일을 삭제하시겠습니까? 이것은 ~이 될 것이다

for SessionID in `sed -n '/Suspended/s/.*unix-gnome *\(\S*\).*/\1/p' /etc/nxserver.log`; do
  rm  /var/lib/nxserver/db/running/sessionId\{$SessionID\}
done

sed 스크립트는 일시 중지된 세션에서 sessionId를 추출하고 해당 파일을 각각 삭제합니다.

이것이 원하는 것이 아니라면 질문을 명확히 해주세요.

답변2

데이터가 이미 잘 정리되어 있으므로 awk대부분의 작업을 신속하게 완료할 수 있습니다.

awk 'NR>2 && $7=="Suspended" {print "sessionID{"$3"}"}' /etc/nxserver.log | xargs rm -f

실행하기 전에 삭제할 파일 목록을 보려면 다음을 사용하세요.

awk 'NR>2 && $7=="Suspended" {print "sessionID{"$3"}"}' /etc/nxserver.log

답변3

cd "/var/lib/nxserver/db/running" && \
perl -lne '
   @F = unpack "x25A32x31A12";
   unlink "sessionId{$F[0]}" if $F[1] eq "Suspended";
' /etc/nxserver.log

unpack처음 25자를 건너뛰고 다음 32 = sessionId를 가져오고 마찬가지로 Status 필드를 가져옵니다. 마지막으로 unlink파일을 삭제하세요.

관련 정보