程式開啟的使用者問題

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

程式開啟的使用者問題

文章呆呆桓 » 週二 11月 17, 2009 3:16 am

在我每次用ubuntu前,terminal開啟ps aux看到gcin使用者是gdm,所以必須將他kill,然後就會自動執行當前使用者,想問如何可以讓gdm不能執行這個gcin,然後只能由我使用者執行。

gdm 1470 0.0 0.2 121452 6744 ? S 02:30 0:00 gcin
呆呆桓
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週五 12月 12, 2008 1:36 am

文章darkranger » 週二 11月 17, 2009 1:07 pm

想要這樣做的原因是?
darkranger
懵懂的國中生
懵懂的國中生
 
文章: 180
註冊時間: 週一 11月 13, 2006 7:14 pm

文章訪客 » 週二 11月 17, 2009 2:22 pm

我是用ibus很正常,不知為甚一堆人說ibus不正常,改成gcin
變通方法,可用登入就kill gcin
把下面存成file,在系統(要chmod u+x killgcin.sh),偏好設定,更多篇好設定,作業階段,初始啟動程式,加入這程式killgcin.sh(或加在~/.bashrc)
killgcin.sh
#-------------------------------------
#/bin/bash
user="gdm"
proc="gcin"
proc_id=`ps aux|awk "/$user.*$proc/{ print $2 }"`
echo "$proc_id"
kill -9 $proc_id
#------------END-------------------------

$user.*$proc是正規表示(gdm.*gcin),越詳細越好,這樣只找出字串有gdm和gcin這2各字

.*代表任何字串(含空字串)

proc_id=`ps aux|awk "/$user.*$proc/{ print $2 }"`
是找出程序的ID

再kill掉
訪客
 

文章訪客 » 週二 11月 17, 2009 2:37 pm

好像有錯,這樣才對,awk用變數不知為甚不行(我是在centos測的)
killgcin.sh

#/bin/bash
proc_id=`ps aux|awk '/gdm.*gcin/{ print $2 }'`
echo "$proc_id"
kill -9 $proc_id
訪客
 

文章訪客 » 週二 11月 17, 2009 2:47 pm

怪怪的(centos os),變數這樣才可(awk要寫2次@@)

#/bin/bash
user="gdm"
proc="gcin"
proc_id=`ps aux|awk "/$user.*$proc/"|awk '{ print $2 }'`
echo "$proc_id"
kill -9 $proc_id
訪客
 

文章訪客 » 週二 11月 17, 2009 3:34 pm

很奇怪,awk變數還是不行,只好不要用變數,下面會把有關gdm開啟的gcin都殺掉

#/bin/bash
proc_id_list=`ps aux|awk "/gdm.*gcin/"|awk '{ print $2 }'`
for proc_id in $proc_id_list
do
echo $proc_id
kill -9 $proc_id
done
訪客
 

文章訪客 » 週二 11月 17, 2009 3:54 pm

終於可以用變數了,之前好像搞錯了,下面會把有關gdm開啟的gcin都殺掉

#!/bin/bash
user="gdm"
proc="gcin"
proc_id_list=`ps aux|awk "/$user.*$proc/"|awk '{ print $2 }'`
for proc_id in $proc_id_list
do
echo $proc_id
kill $proc_id
done
訪客
 

文章訪客 » 週二 11月 17, 2009 3:56 pm

用kill -9 $proc_id會較好(-9是強制)
訪客
 

文章訪客 » 週二 11月 17, 2009 6:07 pm

再來修改一下(killproc.sh ),用參數輸入


./killproc.sh gdm gcin 這樣就可砍掉gdm開啟gcin的所有程序

./killproc.sh username firefox 這樣就可砍掉username開啟firefox的所有程序

滿好用的

$#是取得參數長度
$0是取得這隻程式名稱
$1是取得第一個參數
$2是取得第2個參數


killproc.sh
-------------------------------
#!/bin/bash
if [ $# != 2 ]; then
echo "Usage: $0 [使用者名稱] [欲終止的程序i]"
exit
fi
user="$1"
proc="$2"
proc_id_list=`ps aux|awk "/$user.*$proc/"|awk '{ print $2 }'`
for proc_id in $proc_id_list
do
echo $proc_id
kill $proc_id
done
訪客
 


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:Google [Bot] 和 1 位訪客