新聞中心
在日常使用Linux系統(tǒng)時(shí),有時(shí)候我們需要將一些程序置頂,即讓它們的窗口在其他窗口之前,這樣我們就可以更加方便地進(jìn)行操作。但是,很多人并不知道如何實(shí)現(xiàn)這個(gè)功能。本文就將介紹。

一、使用窗口管理器
大多數(shù)Linux發(fā)行版提供了自己的窗口管理器,比如Gnome、KDE、Xfce等等。如果你使用的是這些窗口管理器之一,那么將程序置頂就非常簡(jiǎn)單了。
以Gnome為例,我們只需要在程序的窗口標(biāo)題欄上點(diǎn)擊鼠標(biāo)右鍵,然后選擇“Always on Top”即可將該程序置頂。如果想要取消置頂,只需要再次點(diǎn)擊該選項(xiàng)即可。
如果你使用的是KDE窗口管理器,也可以通過類似的方式實(shí)現(xiàn)程序的置頂操作。只需要在程序的窗口標(biāo)題欄上點(diǎn)擊鼠標(biāo)右鍵,然后選擇“Window Management”>“Keep Above Others”即可將該程序置頂。同樣,如果想要取消置頂,只需要再次點(diǎn)擊該選項(xiàng)即可。
二、使用命令行
如果你不是使用上述窗口管理器,或者你覺得使用命令行更加快捷方便,那么也可以通過命令行實(shí)現(xiàn)程序的置頂操作。
我們需要查看該程序的窗口ID。可以通過以下命令查看:
“`
xwininfo -name program_name
“`
其中,“program_name”是要置頂?shù)某绦虻拿只蛘邩?biāo)題。執(zhí)行該命令后,鼠標(biāo)會(huì)變成一個(gè)+號(hào),我們需要用它來選取要置頂?shù)某绦虻拇翱凇_x中后,命令行會(huì)輸出一些信息,其中包括窗口的ID。
接下來,我們可以使用以下命令將程序置頂:
“`
wmctrl -i -r window_id -b add,above
“`
其中,“window_id”是要置頂?shù)某绦虻拇翱贗D,可以從上述命令的輸出中獲取。執(zhí)行該命令后,所選窗口就會(huì)被置頂。如果想要取消置頂,可以使用以下命令:
“`
wmctrl -i -r window_id -b remove,above
“`
同樣,其中“window_id”是要取消置頂?shù)某绦虻拇翱贗D。
三、使用第三方工具
如果你感覺上述方法太麻煩,或者想要更加方便地進(jìn)行置頂操作,那么也可以使用一些第三方工具來實(shí)現(xiàn)。
比如,可以安裝“devilspie”工具,它可以自動(dòng)將指定的窗口置頂。安裝后,我們需要?jiǎng)?chuàng)建一個(gè)腳本文件,內(nèi)容類似如下:
“`
(if (is (application_name) “program_name”)
(above))
“`
其中,“program_name”是要置頂?shù)某绦蛎只蛘邩?biāo)題。保存該腳本文件后,就可以使用以下命令啟動(dòng)“devilspie”:
“`
devilspie -a
“`
這樣,就可以自動(dòng)將程序置頂了。
?通過上述介紹,我們可以看到,實(shí)現(xiàn)置頂操作并沒有那么難。如果使用的是常見的窗口管理器,操作會(huì)非常簡(jiǎn)單。如果使用命令行或第三方工具,需要多花一些時(shí)間和精力,但也并不復(fù)雜。根據(jù)自己的情況和需求選擇相應(yīng)的方法即可。
相關(guān)問題拓展閱讀:
- Linux下怎么檢視某個(gè)守護(hù)程序或者所有的守護(hù)程序?
Linux下怎么檢視某個(gè)守護(hù)程序或者所有的守護(hù)程序?
Linux下怎么檢視某個(gè)守護(hù)程序或者所有的守護(hù)程序? 檢視守候程序的命令可以使用ps完成。
程序一般分為互動(dòng)程序、批處理程序和守護(hù)程序(daemons)三類。值得一提的是守護(hù)程序總是活躍的,一般在后臺(tái)執(zhí)行,守護(hù)程序一般由系統(tǒng)在開機(jī)時(shí)通過指令碼自動(dòng)啟用啟動(dòng)或由超級(jí)管理使用者root來啟動(dòng)。比如在Fedora或Redhat中,我們可以定義d伺服器的啟動(dòng)指令碼的執(zhí)行級(jí)別,此檔案位于/etc/init.d目錄下,檔名是d,/etc/init.d/d 就是d伺服器的守護(hù)程式,當(dāng)把它的執(zhí)行級(jí)別設(shè)定為3和5時(shí),當(dāng)系統(tǒng)啟動(dòng)時(shí),它會(huì)跟著啟動(dòng)。
# chkconfig –level 35 d on
由于守護(hù)程序是一直執(zhí)行著的,所以它所處的狀態(tài)是等待請(qǐng)求處理任務(wù)。例如通常大網(wǎng)站的Apache伺服器都在執(zhí)行,等待著使用者來訪問,也就是等待著任務(wù)處理。
Linux伺服器在啟動(dòng)時(shí)需要啟動(dòng)很多系統(tǒng)服務(wù),它們向本地和網(wǎng)路使用者提供了Linux的系統(tǒng)功能介面,直接面向應(yīng)用尺配程式和使用者。提供這些服務(wù)的程式是由執(zhí)行在后臺(tái)的守護(hù)程序來執(zhí)行的。守護(hù)程序是生存期長(zhǎng)的一種程序。它們獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。它們常常在系統(tǒng)引導(dǎo)裝入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。Linux系統(tǒng)有很多守護(hù)程序,大多數(shù)伺服器都是用守護(hù)程序?qū)崿F(xiàn)的。同時(shí),守護(hù)程序完成許多系統(tǒng)任務(wù),比如,作業(yè)規(guī)劃程序crond、列印程序lqd等。有些書籍和資料也把守護(hù)程序稱為”服務(wù)”。選擇執(zhí)行哪些守護(hù)程序,要根據(jù)具體需求決定。檢視系統(tǒng)可以提供的守護(hù)程序?qū)?yīng)的服務(wù),開啟一個(gè)終端以root許可權(quán)執(zhí)行ntsysv命令。
什么是守護(hù)程序守護(hù)程序
守護(hù)程序(daemon)是指在UNIX或其他多工作業(yè)系統(tǒng)中在后臺(tái)執(zhí)行的電腦程式,并不會(huì)接受電腦使用者的直接操控。此類程式會(huì)被以程序的形式初始化。守護(hù)程序程式的名稱通常以字母“d”結(jié)尾:例如,syslogd就是指管理系統(tǒng)日志的守護(hù)程序。
通常,守護(hù)程序沒有任何存在的父程序(即PPID=1),且在UNIX系統(tǒng)程序?qū)蛹?jí)中直接位于init之下。守護(hù)程序程式通常通過如下方法使自己成為守護(hù)程序:對(duì)一個(gè)子程序呼叫fork,然后使其父程序立即終止,使得這個(gè)子程序能在init下執(zhí)行。這種方法通常被稱為“脫殼”。
系統(tǒng)通常在啟動(dòng)時(shí)一同起動(dòng)守護(hù)程序。守護(hù)程序?yàn)閷?duì)網(wǎng)路請(qǐng)求,硬體活動(dòng)等進(jìn)行響應(yīng),或其他通過某些任務(wù)對(duì)其他應(yīng)用程式的請(qǐng)求進(jìn)行回應(yīng)提供支援備念。守護(hù)程序也能夠?qū)τ搀w進(jìn)行配置(如在某些Linux系統(tǒng)上的devfsd),執(zhí)行計(jì)劃任務(wù)(例如cron),以及執(zhí)行其他任務(wù)。
在DOS環(huán)境中,此類應(yīng)用程式被稱為駐留程式(TSR)。在Windows系統(tǒng)中,由稱為Windows服務(wù)的應(yīng)用程式來履行守護(hù)程序的職責(zé)。
在原本的Mac OS系統(tǒng)中,此類應(yīng)用程式被稱為“extensions”。而作為Unix-like的 Mac OS X有守護(hù)程序。(在Mac OS X中也有“服務(wù)”,但他們與Windows中類似的程式在概念上完全不相同。)
守護(hù)程序概念,以及怎么建立守護(hù)程序
這個(gè)不是一、二句話能夠說得清楚的。你必須要通過學(xué)習(xí) UNIX 作業(yè)系統(tǒng)這門課程,你才能夠明白程序的概念、以及程序的多種狀態(tài)之間的排程、還有不同程序之間的 P、V 操作等。簡(jiǎn)單說:建立一個(gè)程序用 C 語言語句實(shí)現(xiàn)就是:fork() 。
linux守護(hù)程序問題
sleep可以睡眠
怎么檢視守護(hù)程序的狀態(tài), 怎么檢視一個(gè)程序是否是守護(hù)程序
檢視守候程序的命令可以使用ps完成。
程序一般分為互動(dòng)程序、批處理程序和守護(hù)程序(daemons)三類。值得一提的是守護(hù)程序總是活躍的,一般在后臺(tái)執(zhí)行,守護(hù)程序一般由系統(tǒng)在開機(jī)時(shí)通過指令碼自動(dòng)啟用啟動(dòng)或由超級(jí)管理使用者root來啟動(dòng)。比如在Fedora或Redhat中,我們可以定義d伺服器的啟動(dòng)指令碼的執(zhí)行級(jí)別,此檔案位于/etc/init.d目錄下,檔名是d,/etc/init.d/d 就陵滾指是d伺服器的守護(hù)程式,當(dāng)把它的執(zhí)行級(jí)別設(shè)定為3和5時(shí),當(dāng)系統(tǒng)啟動(dòng)時(shí),它會(huì)跟著啟動(dòng)。
1
# chkconfig –level 35 d on
由于守護(hù)程序是一直執(zhí)行著的,所以它所處的狀態(tài)是等待請(qǐng)求處理任務(wù)。例如通常大網(wǎng)站的Apache伺服器都在執(zhí)行,等待著使用者來訪問,也就是等待著任務(wù)處理。
Linux伺服器在啟動(dòng)時(shí)需要啟動(dòng)很多系統(tǒng)服務(wù),它們向本地和網(wǎng)路使用者提供了Linux的系統(tǒng)功能介面,直接面向應(yīng)用程式和使用者。提供這些服務(wù)的程式是由執(zhí)行在后臺(tái)的守護(hù)程序來執(zhí)行的。守護(hù)程序是生存期長(zhǎng)的一種程序。它們獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。它們常常在系統(tǒng)引導(dǎo)裝入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。Linux系統(tǒng)有很多守護(hù)程序,大多數(shù)伺服器都是用守護(hù)程序?qū)崿F(xiàn)的。同時(shí),守護(hù)程序完成許多系統(tǒng)任務(wù),比如,作業(yè)規(guī)劃程序crond、列印程序lqd等。有些書籍和資料也把守護(hù)程序稱為”服務(wù)”。選擇執(zhí)行哪些守護(hù)程序,要根據(jù)具體需求決定。檢視系統(tǒng)可以提供的守護(hù)程序?qū)?yīng)的服務(wù),開啟一個(gè)終端以root許可權(quán)執(zhí)行ntsysv命令。
linux c 守護(hù)程序如何讓程序停留
是指建立守護(hù)程序么?
Debian下有個(gè)start-s-daemon(dpkg),可以把一個(gè)前臺(tái)程式執(zhí)行為守護(hù)程序。
程式設(shè)計(jì)實(shí)現(xiàn),可以用daemon呼叫,這個(gè)用起來簡(jiǎn)單,main函式下呼叫一次就可以了,別的都不用動(dòng)(會(huì)重定向0,1,2,別等程式輸出了)。也可以自己fork一個(gè)子程序,然后用setsid給子程序建立一個(gè)新會(huì)話,再關(guān)閉原程序,這時(shí)程式輸出沒有重定向。
linux中守護(hù)程序的父程序是什么程序
init是所有程式的父程序 也就是根程序
linux 怎么證明該程序是php的守護(hù)程序
程序A監(jiān)控程序B,發(fā)現(xiàn)程序B異常退出的時(shí)候就自動(dòng)重啟程序B。 程序A就稱為程序B的守護(hù)程序。
VB守護(hù)程序程式碼
1.名稱為:csrss.exe
Option Explicit
Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib “kernel32” Alias “CreateToolhelp32Snapshot” (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib “kernel32” Alias “Process32First” (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Module32First Lib “kernel32” (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib “kernel32” (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function ProcessNext Lib “kernel32” Alias “Process32Next” (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib “kernel32” (ByVal hObject As Long) As Long
Private Type PROCESSENTRY32
dwSize As Long
tUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
tThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End Type
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPmodule = &H8
Private Type MODULEENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlbltUsage As Long
ProctUsage As Long
modBaseAddr As Byte
modBaseSize As Long
hModule As Long
szModule As String * 256
szExePath As String * 1024
End Type
Private Sub Command1_Click()
End
End Sub
Private Sub Timer1_Timer()
Dim ret As Long, lPid As Long
Dim isLive As Boolean
Dim Mode As MODULEENTRY32, Proc As PROCESSENTRY32
Dim hSnapshot As Long, hMSnapshot As Long
Dim sFilename As String
sFilename = App.Path + “\ss.exe” ‘另一個(gè)程序的路徑
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
Proc.dwSize = Len(Proc)
Mode.dwSize = Len(Mode)
lPid = ProcessFirst(hSnapshot, Proc)
Do While lPid 0
hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, Proc.th32ProcessID)
Mode.szExePath = Space$(256)
ret = Module32First(hMSnapshot, Mode)
If ret > 0 Then
If InStr(1, Mode.szExePath, sFilename, vbTextCompare) > 0 Then ‘Mode.szExePath=程序路徑
isLive = True ‘找到目標(biāo)程序
CloseHandle hMSnapshot
Exit Do
End If
End If
CloseHandle hMSnapshot
lPid = ProcessNext(hSnapshot, Proc)
Loop
CloseHandle hSnapshot
If Not isLive Then
ShellExecute 0, “”, sFilename, “”, “”, 1 ‘如果目標(biāo)程序不存在 則啟動(dòng)它
End If
End Sub
————————————————————————————————————————————————
2.名稱為ss.exe
Option Explicit
Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib “kernel32” Alias “CreateToolhelp32Snapshot” (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib “kernel32” Alias “Process32First” (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Module32First Lib “kernel32” (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib “kernel32” (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function ProcessNext Lib “kernel32” Alias “Process32Next” (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib “kernel32” (ByVal hObject As Long) As Long
Private Type PROCESSENTRY32
dwSize As Long
tUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
tThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End Type
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPmodule = &H8
Private Type MODULEENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlbltUsage As Long
ProctUsage As Long
modBaseAddr As Byte
modBaseSize As Long
hModule As Long
szModule As String * 256
szExePath As String * 1024
End Type
Private Sub Command1_Click()
End
End Sub
Private Sub Timer1_Timer()
Dim ret As Long, lPid As Long
Dim isLive As Boolean
Dim Mode As MODULEENTRY32, Proc As PROCESSENTRY32
Dim hSnapshot As Long, hMSnapshot As Long
Dim sFilename As String
If Dir(App.Path + “\s”) “” Then Exit Sub ‘如果當(dāng)前資料夾記憶體在s這個(gè)檔案 則停止雙程序保護(hù)
sFilename = App.Path + “\csrss.exe”
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
Proc.dwSize = Len(Proc)
Mode.dwSize = Len(Mode)
lPid = ProcessFirst(hSnapshot, Proc)
Do While lPid 0
hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, Proc.th32ProcessID)
Mode.szExePath = Space$(256)
ret = Module32First(hMSnapshot, Mode)
If ret > 0 Then
If InStr(1, Mode.szExePath, sFilename, vbTextCompare) > 0 Then
isLive = True
CloseHandle hMSnapshot
Exit Do
End If
End If
CloseHandle hMSnapshot
lPid = ProcessNext(hSnapshot, Proc)
Loop
CloseHandle hSnapshot
If Not isLive Then
ShellExecute 0, “”, sFilename, “”, “”, 1
End If
End Sub
linux將程式置頂?shù)慕榻B就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux將程式置頂,如何在Linux系統(tǒng)中將程序置頂,Linux下怎么檢視某個(gè)守護(hù)程序或者所有的守護(hù)程序?的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
分享標(biāo)題:如何在Linux系統(tǒng)中將程序置頂 (linux將程式置頂)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/dhcsocd.html


咨詢
建站咨詢
