如何在Ubuntu中使用單個命令刪除所有未使用的信號量和共享內存?刪除Linux上的所有共享內存和信號量
回答
既然您提到您正在使用NFS系統,您是否可以訪問這些信號燈和shared memory?我認爲你誤解了它們是什麼,它們是一個使程序能夠相互溝通的API代碼,semaphore是一種用於防止競爭條件和線程彼此溝通的解決方案,簡單的回答是,它們不會留下任何殘留在任何文件系統上。
除非你使用套接字或管道?你有刪除它們的必要權限,他們爲什麼在NFS系統上?
希望這會有所幫助, 最好的問候, 湯姆。
ipcs -s | grep $USERNAME | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
或
ipcs -s | grep $USERNAME | awk ' { print $2 } ' | xargs ipcrm sem
更改$ USERNAME一個真實的用戶名。
這裏,保存並嘗試在你的shell這個腳本(kill_ipcs.sh):
#!/bin/bash
ME=`whoami`
IPCS_S=`ipcs -s | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
IPCS_M=`ipcs -m | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
IPCS_Q=`ipcs -q | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
for id in $IPCS_M; do
ipcrm -m $id;
done
for id in $IPCS_S; do
ipcrm -s $id;
done
for id in $IPCS_Q; do
ipcrm -q $id;
done
我們使用它時,我們運行在大學生服務器IPCS程序。有些人總是不清理所以......它的需要:P
謝謝。正是我在找什麼。 – Burkhard
即使'nattach'不爲零,是不是全部刪除?這個怎麼樣?:'ipcs -m | egrep「0x [0-9a-f] + [0-9] +」| awk'{if($ 6 == 0){print $ 2; }}'| xargs -n1 ipcrm -m' – Ben
我會用'xargs'替換for循環:'echo $ IPCS_S | xargs -n1 ipcrm -s'。 – user1202136
檢查是否有任何刪除與:
ipcs | nawk -v u=`whoami` '/Shared/,/^$/{ if($6==0&&$3==u) print "ipcrm shm",$2,";"}/Semaphore/,/^$/{ if($3==u) print "ipcrm sem",$2,";"}' | /bin/sh
爲:
ipcs -a | grep `whoami`
在Linux上通過將它們全部刪除太陽它會是:
ipcs -a | nawk -v u=`whoami` '$5==u &&(($1=="m" && $9==0)||($1=="s")){print "ipcrm -"$1,$2,";"}' | /bin/sh
courtesy of di.uoa。GR
檢查又一切正常
刪除您 SEMS /共享MEM - 假設你是在沒有管理員權限
此工程在我的Mac OS的工作站用戶:
for n in `ipcs -b -m | egrep ^m | awk '{ print $2; }'`; do ipcrm -m $n; done
這是我要做的事FreeBSD中:
#!/usr/local/bin/bash for i in $(ipcs -a | grep "^s" | awk '{ print $2 }'); do echo "ipcrm -s $i" ipcrm -s $i done
除了bvamos的回答,根據該文檔中使用的sem
被棄用:
NAME再用ipcrm - 刪除一個消息隊列,信號量設定或共享存儲器ID 概要再用ipcrm [-M鍵| -m id | -Q鍵| -q id | -S鍵| -s id] ...不提供用途
ipcrm [shm | msg | sem] id ...共享
取出存儲
我們ipcrm -m
由ID
#!/bin/bash
set IPCS_M = ipcs -m | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f2 -d" "
for id in $IPCS_M; do
ipcrm -m $id;
done
或ipcrm -M
刪除共享存儲器段由密鑰
#!/bin/bash
set IPCS_M = ipcs -m | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f1 -d" "
for id in $IPCS_M; do
ipcrm -M $id;
done
除去的共享存儲器段
刪除消息隊列
我們ipcrm -q
由ID
#!/bin/bash
set IPCS_Q = ipcs -q | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f2 -d" "
for id in $IPCS_Q; do
ipcrm -q $id;
done
或ipcrm -Q
刪除共享存儲器段由密鑰
#!/bin/bash
set IPCS_Q = ipcs -q | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f1 -d" "
for id in $IPCS_Q; do
ipcrm -Q $id;
done
刪除共享存儲器段除去信號燈
us ipcrm -s
刪除一個旗語段由ID
#!/bin/bash
set IPCS_S = ipcs -s | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f2 -d" "
for id in $IPCS_S; do
ipcrm -s $id;
done
或ipcrm -S
由密鑰
#!/bin/bash
set IPCS_S = ipcs -s | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f1 -d" "
for id in $IPCS_S; do
ipcrm -S $id;
done
以去除一個信號量段,以除去所有的共享存儲器段在FreeBSD
#!/bin/sh
for i in $(ipcs -m | awk '{ print $2 }' | sed 1,2d);
do
echo "ipcrm -m $i"
ipcrm -m $i
done
以除去所有的信號量
#!/bin/sh
for i in $(ipcs -s | awk '{ print $2 }' | sed 1,2d);
do
echo "ipcrm -s $i"
ipcrm -s $i
done
1線將盡
對於消息隊列
ipcs -q | sed "$ d; 1,2d" | awk '{ print "Removing " $2; system("ipcrm -q " $2) }'
ipcs -q
會給消息的記錄隊列
sed "$ d; 1,2d "
將刪除最後一個空白線("$ d"
)和前兩個標題行("1,2d"
)
awk
將做其餘的事情,即打印和使用命令"ipcrm -q"
wrt柱2的(coz $2
)的值
#!/bin/bash
ipcs -m | grep `whoami` | awk '{ print $2 }' | xargs -n1 ipcrm -m
ipcs -s | grep `whoami` | awk '{ print $2 }' | xargs -n1 ipcrm -s
ipcs -q | grep `whoami` | awk '{ print $2 }' | xargs -n1 ipcrm -q
請解釋爲什麼你的答案有效,以及如何。 – Julian
rkhunter給我可疑共享內存段[警告]
我試圖清理與上述把腳本存儲器段一個檢查。但我再次警告
- 1. 如何刪除未使用的共享內存和信號量?
- 2. 共享內存信號量
- 3. 信號量和共享內存
- 4. 如何處理fork-exec上的共享內存和共享信號量?
- 5. 與信號量共享內存同步
- 6. 共享內存中的信號量,進程和遞增變量
- 7. Linux共享內存
- 8. php共享內存和信號量,避免重點衝突
- 9. 使用共享內存和信號量實現管
- 10. 用信號和共享存儲器的Linux
- 11. 刪除共享內存的Linux再用ipcrm
- 12. 共享內存和常量
- 13. Linux的RSS和共享內存
- 14. C - 沒有共享所有進程的信號量
- 15. c/linux-ftruncate和POSIX共享內存段
- 16. 使用ipcrm刪除共享內存
- 17. 用shmctl刪除共享內存段
- 18. 在共享主機Linux帳戶上使用共享內存
- 19. 將posix信號量分配到共享內存
- 20. 在共享內存中鎖定信號量問題
- 21. 如何在共享內存中使用信號量
- 22. 使用信號量共享內存安全寫入
- 23. IPCS不顯示我的共享內存和信號燈
- 24. 在刪除共享內存之前從共享內存中分離
- 25. 兩個節目信號或共享內存之間的通信?
- 26. 從共享內存段中讀取和寫入信號量的位置?
- 27. 手術系統,叉,共享內存和信號燈
- 28. 怎樣避免使用共享內存和信號燈
- 29. 刪除括號內的所有內容
- 30. Linux信號量,跨forked-> exec'd進程共享?
這個問題確實需要解釋「爲什麼」。 –
我正在做一個學校項目c – simone
因此,像往常一樣做功課,你知道什麼,你有什麼嘗試? – Cascabel