linux shell 中的sleep命令
在有的shell(比如linux中的bash)中sleep還支持睡眠(分,小時)
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小時
Ⅱ OMV查詢硬碟休眠狀態(Linux通用)
在OMV中,可以針對硬碟分別設置休眠:
也可以用命令:
設置完成後,怎麼檢測或查看是不是生效了呢?這就涉及到如何查詢硬碟狀態了,可以用以下命令查看單塊磁碟:
我有兩塊盤,怎麼查看呢?
如果有很多塊呢?上面這種方法就不好了,所以改進一下:
把這個存成ckdisk.sh到一個目錄下,例如/root/code下,然後 chmod +x ckdisk.sh 增加可執行許可權。
回到omv界面,找計劃任務,添加一個:
注意路徑要加對。
保存應用後,點運行即可看到結果:
以下是自動記錄日誌的方法補充
Ⅲ linux中程序處於停止態可以被喚醒嗎
在Linux中,休眠主要分三個主要的步驟:
1) 凍結用戶態進程和內核態任務
2) 調用注冊的設備的suspend的回調函數, 順序是按照注冊順序
3) 休眠核心設備和使CPU進入休眠態, 凍結進程是內核把進程列表中所有的進程的狀態都設置為停止,並且保存下所有進程的上下文.
當這些進程被解凍的時候,他們是不知道自己被凍結過的,只是簡單的繼續執行。
如何讓Linux進入休眠呢?用戶可以通過讀寫sys文件/sys /power/state 是實現控制系統進入休眠. 比如
# echo mem > /sys/power/state
命令系統進入休眠. 也可以使用
# cat /sys/power/state
來得到內核支持哪幾種休眠方式.
1. 相關代碼
• kernel/kernel/power/main.c
• kernel/arch/arm/mach-xxx/pm.c
• kernel/driver/base/power/main.c
接下來讓我們詳細的看一下Linux是怎麼休眠/喚醒的:
用戶對於/sys/power/state 的讀寫會調用到 kernel/kernel/power/main.c中的state_store(),
用戶可以寫入 const char * const pm_states[] 中定義的字元串, 比如"mem", "standby"。
const char *const pm_states[PM_SUSPEND_MAX] = {
#ifdef CONFIG_EARLYSUSPEND
[PM_SUSPEND_ON] = "on",
#endif
[PM_SUSPEND_STANDBY] = "standby",
[PM_SUSPEND_MEM] = "mem",
};
常見有standby(suspend to RAM)、mem(suspend to RAM)和disk(suspend to disk),只是standby耗電更多,返回到正常工作狀態的時間更短。
然後state_store()會調用enter_state()<註:這是經典Linux調用流程, 在Android系統中,
Kernel將調用request_suspend_state,而不是enter_state>,它首先會檢查一些狀態參數,然後同步文件系統。
2. 准備, 凍結進程
當進入到suspend_prepare()中以後, 它會給suspend分配一個虛擬終端來輸出信息, 然後廣播一個系統要進入suspend的Notify,
關閉掉用戶態的helper進程, 然後一次調用suspend_freeze_processes()凍結所有的進程, 這里會保存所有進程當前的狀態,
也許有一些進程會拒絕進入凍結狀態, 當有這樣的進程存在的時候, 會導致凍結失敗,此函數就會放棄凍結進程,並且解凍剛才凍結的所有進程。
3. 讓外設進入休眠
現在, 所有的進程(也包括workqueue/kthread) 都已經停止了,內核態人物有可能在停止的時候握有一些信號量,
所以如果這時候在外設裡面去解鎖這個信號量有可能會發生死鎖,所以在外設的suspend()函數裡面作lock/unlock鎖要非常小心,
這里建議設計的時候就不要在suspend()裡面等待鎖。而且因為suspend的時候,有一些Log是無法輸出的,所以一旦出現問題,非常難調試。
然後kernel在這里會嘗試釋放一些內存。
最後會調用suspend_devices_and_enter()來把所有的外設休眠, 在這個函數中,
如果平台注冊了suspend_ops(通常是在板級定義中定義和注冊,在kernel/arch/arm/mach-xx/pm.c中調用suspend_set_ops),
這里就會調用 suspend_ops->begin(); 然後調用dpm_suspend_start,他們會依次調用驅動的suspend() 回調來休眠掉所有的設備。
當所有的設備休眠以後, suspend_ops->prepare()會被調用, 這個函數通常會作一些准備工作來讓板機進入休眠。
接下來Linux,在多核的CPU中的非啟動CPU會被關掉,通過注釋看到是避免這些其他的CPU造成race condio,接下來的以後只有一個CPU在運行了。
suspend_ops 是板級的電源管理操作, 通常注冊在文件 arch/arch/mach-xxx/pm.c 中.
接下來, suspend_enter()會被調用, 這個函數會關閉arch irq, 調用 device_power_down(), 它會調用suspend_late()函數,
這個函數是系統真正進入休眠最後調用的函數,通常會在這個函數中作最後的檢查。 如果檢查沒問題, 接下來休眠所有的系統設備和匯流排,
並且調用 suspend_pos->enter() 來使CPU進入省電狀態,這時就已經休眠了。代碼的執行也就停在這里了。
三、Linux Resume流程
如果在休眠中系統被中斷或者其他事件喚醒,接下來的代碼就會開始執行,這個喚醒的順序是和休眠的循序相反的,
所以系統設備和匯流排會首先喚醒,使能系統中斷,使能休眠時候停止掉的非啟動CPU, 以及調用suspend_ops->finish(),
而且在suspend_devices_and_enter()函數中也會繼續喚醒每個設備,使能虛擬終端, 最後調用 suspend_ops->end()。
在返回到enter_state()函數中的,當 suspend_devices_and_enter() 返回以後,外設已經喚醒了,
但是進程和任務都還是凍結狀態, 這里會調用suspend_finish()來解凍這些進程和任務, 而且發出Notify來表示系統已經從suspend狀態退出, 喚醒終端。
到這里,所有的休眠和喚醒就已經完畢了,系統繼續運行了。
Ⅳ linux命令中ps -ef詳解
1、ps -ef表示查看全格式的全部進程。
ps是linux下最常用的也是非常強大的進程查看命令,常配合管道命令 | 和查找命令 grep 同時執行來查看特定進程。
參數含義:
-e 顯示所有進程。-f 全格式。-h 不顯示標題。-l 長格式。-w 寬輸出。a 顯示終端上的所有進程,包括其他用戶的進程。r 只顯示正在運行的進程。x 顯示沒有控制終端的進程。
2、(4)linux休眠命令擴展閱讀:
進程狀態:
R 運行,正在運行或在運行隊列中等待。
S 中斷,休眠中, 受阻, 在等待某個條件的形成或接受到信號。
D 不可中斷,收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生。
Z 僵死 ,進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放。
T 停止,進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行。
3、grep命令是查找
中間的|是管道命令 是指ps命令與grep同時執行
PS是LINUX下最常用的也是非常強大的進程查看命令
grep命令是查找,是一種強大的文本搜索工具,它能 使用正則表達式 搜索文本,並把匹配的行列印出來。
grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用許可權是所有用戶。
以下這條命令是檢查java 進程是否存在:ps -ef |grep java
欄位含義如下:
UID PID PPID C STIME TTY TIME CMD
zzw 14124 13991 0 00:38 pts/0 00:00:00 grep --color=auto dae
UID :程序被該 UID 所擁有
PID :就是這個程序的 ID
PPID :則是其上級父程序的ID
C :CPU使用的資源百分比
STIME :系統啟動時間
TTY :登入者的終端機位置
TIME :使用掉的CPU時間。
CMD :所下達的是什麼指令
ps -e|grep dae
Ⅳ 如何設置linux進程的休眠
將一個進程置於休眠狀態,一般步驟如下:
0. 定義並初始化(如果還沒有的話)一個等待隊列頭(wait_queue_head_t),這個等待隊列頭應該是能被要休眠的進程和負責喚醒的進程都能訪問 到。
1. 對進程的每次休眠,定義並初始化一個等待隊列(wait_queue_t)
2. 把等待隊列加入到相應的等待隊列頭中。
3. 把進程狀態置為 TASK_INTERRUPTIBLE 或 TASK_UNINTERRUPTIBLE
4. 再次檢查休眠條件是否為真,否則跳過第5步
5. 執行 schele()
6. 清理:將進程狀態改為 TASK_RUNNING(通常已經是,除非是從第4步跳過來的),把等待隊列從等待隊列頭中刪除(防止多次喚醒)
Ⅵ sleep休眠怎麼喚醒 linux
sleep命令
常用工具命令 sleep命令暫停指定的時間。
語法
sleep(參數)
參數
時間:指定要暫停時間的長度。
時間長度,後面可接 s、m、h 或 d,其中 s 為秒,m 為 分鍾,h 為小時,d 為日數。 實例 有時在寫一些以循環方式運行的監控腳本,設置時間間隔是必不可少的,下面是一個Shell進度條的腳本演示在腳本中生成延時。
#!/bin/bash
b='' for ((i=0;$i<=100;i++)) do printf "Progress:[%-100s]%d%%\r" $b $i sleep 0.1 b=#$b done
Ⅶ linux無讀者硬碟不能休眠
hd-idle無論怎樣設置都無法使用硬碟在空閑時休眠,實在找不到原因。在查找相關資料時發現在linux操作系統還有個叫hdparm的硬碟控制軟體,然後在OPENWRT軟體搜索果真有這個軟體,然後就安裝試試。不想真能讓我的硬碟在設置好的空閑時間後進入省電模式也可以說是休眠模式吧!給出我的安裝使用過程。註:我的路由(HG255D刷OPENWRT)裝有迅雷固件、個人博客、aria2、網路同步+常用共享組件!使用還是可以的負載不算很高。之前有人說裝迅雷固件後不能休眠,但我的可以休眠。不能休眠的可以試試這個軟體...
OPENWRT路由上安裝與設置:
一、安裝hdparm
opkg update
opkg install hdparm
二、執行命令:
hdparm -S 60 /dev/sda (放到開機啟動項就可以每次開機都生效!)
hdparm -y /dev/sda (這個命令是立即休眠,測試硬碟是否休眠成功。)
說明:hdparm -S 60 /dev/sda 設置超時值(5分鍾)使硬碟進入休眠模式(省電模式)(這個 S數值/12=分鍾);/dev/sda 為掛載的硬碟路徑,ls /dev/sda*查看你的盤符。
三、執行完hdparm -S 60 /dev/sda 這個命令時你的路由已經設置為5分鍾休眠了。(註:5分鍾硬碟無操作時省電模式,休眠時接到讀寫命令會自動喚醒進入工作模式)**Linux hdparm 命令**
四、hdparm功能說明:顯示與設定硬碟的參數。
語法:hdparm -CfghiIqtTvyYZ-A <0或1>-d <0或1>-K <0或1>-n <0或1>-P -S -W <0或1>[設備]
補充說明:hdparm可檢測,顯示與設定IDE或SCSI硬碟的參數。
測試各硬碟讀取速度判斷硬碟故障
在服務端命令窗口中執行如下命令
hdparm -t /dev/hda (IDE硬碟)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡陣列)
hdparm -t /dev/md0 (軟RAID設備)
測試結果在空載情況下應 >40M/s ,在負載情況下平均應 > 20M/s 為正常,如測試結果極低則需要進一步使用硬碟專用檢測工具測試是否為硬碟故障。
參數:
-a 設定讀取文件時,預先存入塊區的分區數,若不加上選項,則顯示目前的設定。
-A<0或1> 啟動或關閉讀取文件時的快取功能。
-c 設定IDE32位I/O模式。
-C 檢測IDE硬碟的電源管理模式。
-d<0或1> 設定磁碟的DMA模式。
-f 將內存緩沖區的數據寫入硬碟,並清楚緩沖區。
-g 顯示硬碟的磁軌,磁頭,磁區等參數。
-h 顯示幫助。
-i 顯示硬碟的硬體規格信息,這些信息是在開機時由硬碟本身所提供。
-I 直接讀取硬碟所提供的硬體規格信息。
-k<0或1> 重設硬碟時,保留-dmu參數的設定。
-K<0或1> 重設硬碟時,保留-APSWXZ參數的設定。
-m 設定硬碟多重分區存取的分區數。
-n<0或1> 忽略硬碟寫入時所發生的錯誤。
-p 設定硬碟的PIO模式。
-P 設定硬碟內部快取的分區數。
-q 在執行後續的參數時,不在屏幕上顯示任何信息。
-r<0或1> 設定硬碟的讀寫模式。
-S 設定硬碟進入省電模式前的等待時間。
-t 評估硬碟的讀取效率。
-T 平谷硬碟快取的讀取效率。
-u<0或1> 在硬碟存取時,允許其他中斷要求同時執行。
-v 顯示硬碟的相關設定。
-W<0或1> 設定硬碟的寫入快取。
-X 設定硬碟的傳輸模式。
-y 使IDE硬碟進入省電模式。
-Y 使IDE硬碟進入睡眠模式。