由于項(xiàng)目產(chǎn)品需要過(guò)能源之星3.0,所以最近做了一些電源管理低功耗方面的工作,抽個(gè)時(shí)間正好梳理一下。
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、清水河ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的清水河網(wǎng)站制作公司
其實(shí)Linux 電源管理非常復(fù)雜,牽扯到很多方面,比如系統(tǒng)級(jí)的待機(jī)、頻率電壓變換、系統(tǒng)空閑時(shí)的處理以及每個(gè)設(shè)備驅(qū)動(dòng)對(duì)于系統(tǒng)待機(jī)的支持和每個(gè)設(shè)備的運(yùn)行時(shí)電源管理,可以說(shuō)和系統(tǒng)中的每個(gè)設(shè)備驅(qū)動(dòng)也都息息相關(guān)。
在Linux內(nèi)核上有如下的框架支持:
1. CPU 在運(yùn)行時(shí)根據(jù)系統(tǒng)負(fù)載進(jìn)行動(dòng)態(tài)電壓和頻率變換的CPUFreq ;
2. CPU 在系統(tǒng)空閑時(shí)根據(jù)空閑的情況進(jìn)行低功耗模式的CPUIdle ;
3. 多核系統(tǒng)下CPU 的熱插拔支持 ;
4. 系統(tǒng)和設(shè)備對(duì)于延遲的特別需求而提出申請(qǐng)的PMQoS,它會(huì)作用于CPUIdle 的具體策略 ;
5. 設(shè)備驅(qū)動(dòng)針對(duì)系統(tǒng)Suspend to RAM/Disk 的一系列入口函數(shù) ;
6. SoC 進(jìn)入suspend 狀態(tài)、SDRAM 自刷新的入口 ;
7. 設(shè)備的runtime(運(yùn)行時(shí))動(dòng)態(tài)電源管理,根據(jù)使用情況動(dòng)態(tài)開(kāi)關(guān)設(shè)備 ;
8. 底層的時(shí)鐘、穩(wěn)壓器、頻率/電壓表(OPP 模塊完成)支撐;
Linux電源管理中主要使用的技術(shù)包括:
1、CPUFreq : 即DVFS(Dynamic voltage and frequency scaling),即動(dòng)態(tài)電壓頻率調(diào)整。在系統(tǒng)運(yùn)行時(shí)根據(jù)系統(tǒng)負(fù)載動(dòng)態(tài)調(diào)節(jié);
2、DEVFreq:CPUFreq只針對(duì)CPU做動(dòng)態(tài)電壓頻率調(diào)節(jié),而devfreq可以對(duì)設(shè)備,如DRAM,GPU等做動(dòng)態(tài)電壓頻率調(diào)節(jié);
3、CPUIdle:CPU在系統(tǒng)空閑時(shí)根據(jù)空閑的情況進(jìn)行低功耗模式,比如C0--C3四個(gè)狀態(tài)對(duì)應(yīng)不同的低功耗策略;
4、CPUHotplug:多核系統(tǒng)下CPU的熱插拔支持;
5、PM QOS:主要作用于cpuidle的具體策略,是針對(duì)系統(tǒng)和設(shè)備對(duì)于延遲的特別需求而提出的;
6、SUSPEND:主要有suspend to ram和suspend to disk兩種,suspend to ram主要是掛起各設(shè)備,并使dram進(jìn)入自刷新,而suspend to disk就干脆把dram也關(guān)掉,直接把狀態(tài)保存到disk;
7、RUNTIME PM:設(shè)備的runtime(運(yùn)行時(shí))動(dòng)態(tài)電源管理,根據(jù)使用情況動(dòng)態(tài)開(kāi)關(guān)設(shè)備;
8、Regulator:用于調(diào)節(jié)CPU等模塊的電壓和電流值;
9、OPP:可以使SOCs或者Devices正常工作的電壓和頻率組合。內(nèi)核提供這一個(gè)Layer,是為了在眾多的電壓和頻率組合中,篩選出一些相對(duì)固定的組合,從而使事情變得更為簡(jiǎn)單一些;
10、Thermal:溫控管理。
電源管理相關(guān)源碼在內(nèi)核樹(shù)中主要分布于:
kernel/power/ *
drivers/power/
drivers/base/power/*
drivers/cpuidle/*
drivers/cpufreq/*
drivers/devfreq/*
include/linux/power_supply.h
include/linux/cpuidle.h
include/linux/cpufreq.h
include/linux/cpu_pm.h
include/linux/device.h
include/linux/pm.h
include/linux/pm domain.h
include/linux/pm runtime.h
include/linux/pm wakeup.h
include/linux/suspend.h
這個(gè)問(wèn)題我解決過(guò)哦。
用P/Invoke調(diào) API:kernel32.dll中的GetSystemPowerStatus函數(shù)。函數(shù)返回系統(tǒng)的電源狀態(tài)。狀態(tài)指數(shù)系統(tǒng)是在直流電源還是交流電源下運(yùn)作,電池是否在充電,電池的剩余電量。
先定義結(jié)構(gòu)體:
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_POWER_STATUS
{
public byte ACLineStatus;
public byte BatteryFlag;
public byte BatteryLifePercent;
public byte Reserved1;
public int BatteryLifeTime;
public int BatteryFullLifeTime;
}
然后導(dǎo)入外部函數(shù):
[DllImport("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern bool GetSystemPowerStatus(ref SYSTEM_POWER_STATUS systemPowerStatus);
如果調(diào)用成功,返回 true,然后分析systemPowerStatus的數(shù)據(jù)就行。
ACLineStatus為1時(shí),表示正在使用交流電源,為0使用直流電源。
希望能夠幫到你。
我的ubuntu里也裝了Kde,不過(guò)現(xiàn)在在windows下工作,不能切過(guò)去,我想你也可以利用 tab鍵去試,比如說(shuō)輸入kde后按tab,多按幾次,讓它列出所有的以kde打頭的命令,再?gòu)睦锩嬲?也可以試試k打頭的,power打頭的,等等.
常用系統(tǒng)服務(wù)
============
acpi-support 高級(jí)電源管理支持
acpid acpi守護(hù)程序.這兩個(gè)用于電源管理,非常重要
alsa 聲音子系統(tǒng)
alsa-utils
anacron cron的子系統(tǒng),將系統(tǒng)關(guān)閉期間的計(jì)劃任務(wù),在下一次系統(tǒng)運(yùn)行時(shí)執(zhí)行。
apmd acpi的擴(kuò)展
atd 類(lèi)似于cron的任務(wù)調(diào)度系統(tǒng)。建議關(guān)閉
binfmt-support 核心支持其他二進(jìn)制的文件格式。建議開(kāi)啟
bluez-utiles 藍(lán)牙設(shè)備支持
bootlogd 啟動(dòng)日志。開(kāi)啟它
cron 任務(wù)調(diào)度系統(tǒng),建議開(kāi)啟
cupsys 打印機(jī)子系統(tǒng)。
dbus 消息總線系統(tǒng)(message bus system)。非常重要
dns-clean 使用撥號(hào)連接時(shí),清除dns信息。
evms 企業(yè)卷管理系統(tǒng)(Enterprise Volumn Management system)
fetchmail 郵件用戶代理,用于收取郵件
gdm gnome登錄和桌面管理器。
gdomap
gpm 終端中的鼠標(biāo)支持。
halt 別動(dòng)它。
hdparm 調(diào)整硬盤(pán)的腳本,配置文件為“/etc/hdparm.conf”。
hibernate 系統(tǒng)休眠
hotkey-setup 筆記本功能鍵支持。支持類(lèi)型包括: HP, Acer, ASUS, Sony, Dell,和IBM。
hotplug and hotplug-net 即插即用支持,比較復(fù)雜,建議不要?jiǎng)铀?/p>
hplip HP打印機(jī)和圖形子系統(tǒng)
ifrename 網(wǎng)絡(luò)接口重命名腳本。如果您有十塊網(wǎng)卡,您應(yīng)該開(kāi)啟它
inetd在文件“/etc/inetd.conf”中,注釋掉所有你不需要的服務(wù)。如果該文件不包含任何服務(wù),那關(guān)閉它是很安全的。
klogd 重要。
linux-restricted-modules-common受限模塊支持。“/lib/linux-restricted-modules/”文件夾中的模塊為受限模塊。例如某些驅(qū)動(dòng)程序,如果您沒(méi)有使用受限模塊,就不需要開(kāi)啟它。
lvm 邏輯卷管理系統(tǒng)支持。
makedev 創(chuàng)建設(shè)備文件,非常重要。
mdamd 磁盤(pán)陣列
module-init-tools 從/etc/modules加載擴(kuò)展模塊,建議開(kāi)啟。
networking 網(wǎng)絡(luò)支持。按“/etc/network/interfaces”文件預(yù)設(shè)激活網(wǎng)絡(luò),非常重要。
ntpdate 時(shí)間同步服務(wù),建議關(guān)閉。
pcmcia pcmcia設(shè)備支持。
powernowd 移動(dòng)CPU節(jié)能支持
ppp and ppp-dns 撥號(hào)連接
readahead 預(yù)加載庫(kù)文件。
reboot 別動(dòng)它。
resolvconf 自動(dòng)配置DNS
rmnologin 清除nologin
rsync rsync守護(hù)程序
sendsigs 在重啟和關(guān)機(jī)期間發(fā)送信號(hào)
single 激活單用戶模式
ssh ssh守護(hù)程序。建議開(kāi)啟
stop-bootlogd 在2,3,4,5運(yùn)行級(jí)別中停止bootlogd服務(wù)
sudo 檢查sudo狀態(tài)。重要
sysklogd 系統(tǒng)日志
udev udev-mab 用戶空間dev文件系統(tǒng)(userspace devfilesystem)。重要
umountfs 卸載文件系統(tǒng)
urandom 隨機(jī)數(shù)生成器
usplash 開(kāi)機(jī)畫(huà)面支持
vbesave 顯卡BIOS配置工具。保存顯卡的狀態(tài)
xorg-common 設(shè)置X服務(wù)ICE socket。
adjtimex 調(diào)整核心時(shí)鐘的工具
dirmngr 證書(shū)列表管理工具,和gnupg一起工作。
hwtools irqs優(yōu)化工具
libpam-devperm 系統(tǒng)崩潰之后,用于修理設(shè)備文件許可的守護(hù)程序。
lm-sensors 板載傳感器支持
mdadm-raid 磁盤(pán)陳列管理器
screen-cleanup 清除開(kāi)機(jī)屏幕的腳本
xinetd 管理其他守護(hù)進(jìn)程的一個(gè)inetd超級(jí)守護(hù)程序
系統(tǒng)管理
========
一些細(xì)節(jié)
--------
Linux是大小寫(xiě)敏感的系統(tǒng),所有的命令、路徑、參數(shù)、變量……都區(qū)分大小寫(xiě)
您可以使用TAB鍵補(bǔ)全您的命令,無(wú)論任何時(shí)候,多按幾次TAB總會(huì)有所幫助
Shell的功能鍵能夠協(xié)助您更高效的編輯命令,請(qǐng)熟悉其鍵綁定,盡量使用它
命令由命令名、分隔符、參數(shù)、操作對(duì)象構(gòu)成
命令名標(biāo)識(shí)命令的功能,例如cp(copy)、mv(move)、rm(remove)……
有些命令包含一些子命令,您可以認(rèn)為它的命令名由兩個(gè)單詞構(gòu)成,例如“apt”軟件包管理系統(tǒng):
apt-get install 安裝一個(gè)軟件
apt-get remove 刪除一個(gè)軟件
分隔符為空格,多個(gè)連續(xù)的空格視為一個(gè)空格,下面兩個(gè)命令相同:
cp a b
cp a b
有一些特殊符號(hào)也屬于分隔符,例如管道(“|”)、重定向(“”、“”、“”)、后臺(tái)運(yùn)行(“”)、序列執(zhí)行(“”、“;”)。使用這些符號(hào)時(shí),您不需要再使用空格作為分隔符,例如:
ls -al|less
我們寫(xiě)為以下形式,只是為了您更容易的閱讀它:
ls -al | less
參數(shù)可以精細(xì)調(diào)節(jié)命令的行為,以“-”引導(dǎo),通常為參數(shù)名的首字母。許多軟件都可以使用“-h”參數(shù)來(lái)閱讀使用說(shuō)明,例如:
apt-get -h
您也可以使用參數(shù)的全名,一般以“--”引導(dǎo),例如:
apt-get --help
多數(shù)命令中,使用“-”引導(dǎo)多個(gè)字符,將會(huì)被視為多個(gè)參數(shù),例如:
apt-get -help
系統(tǒng)會(huì)解讀為以下命令
apt-get -h -e -l -p
少數(shù)命令的參數(shù),不需要以“-”引導(dǎo),或者使用“-”引導(dǎo)參數(shù)全名,例如:
ps aux
/etc/init.d/gdm start
mplayer -loop xxx
當(dāng)您需要對(duì)多個(gè)對(duì)象進(jìn)行操作時(shí),您可以使用空格分隔符將它們隔開(kāi):
touch 1 2 3 4 5 6
使用空格分隔的多個(gè)對(duì)象,視為一個(gè)整體,作為命令的一個(gè)操作對(duì)象:
mv 1 2 3 4 5 6 /home/
這個(gè)命令把“1 2 3 4 5 6”作為一個(gè)操作對(duì)象,移動(dòng)到另一個(gè)操作對(duì)象,“/home/”目錄
遞歸表示在子層次中重復(fù)相同操作。例如遞歸復(fù)制某目錄,不但復(fù)制當(dāng)前目錄及其下的所有文件;而且對(duì)當(dāng)前目錄的子目錄,也進(jìn)行遞歸復(fù)制的操作。
格式約定
--------
使用“[]”表示可選項(xiàng),實(shí)際輸入為方括號(hào)中的內(nèi)容,例如
ls [-al]
ls是必須的,參數(shù)不需要以方括號(hào)包圍起來(lái)。
使用“”表示必需項(xiàng),實(shí)際輸入為尖括號(hào)中的內(nèi)容
使用“|”表示“或”,以“|”分隔的項(xiàng)目不能同時(shí)使用,例如
tar [-z|j c|x vf] 歸檔文件 [源文件]
參數(shù)通常緊跟命令名,除非必要,在命令格式中,我們通常省略它們
系統(tǒng)信息
--------
uptime
聯(lián)機(jī)信息-時(shí)間,顯示如下
11:27pm up 9 days, 7:12, 3 user, load average: 0.07, 0.12,0.14
當(dāng)前系統(tǒng)時(shí)間 系統(tǒng)運(yùn)行時(shí)間 當(dāng)前在線用戶數(shù) 系統(tǒng)負(fù)荷 1分鐘前 5分鐘前 15分鐘前
w
聯(lián)機(jī)信息-已登錄用戶,顯示如下
01:04:10 up 1:34, 2 users, load average: 0.25, 0.16, 0.11
uptime 信息
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user tty1 192.168.0.1 23:30 1:33 0.14s 0.12s -bash
用戶名 登錄方式 來(lái)源地址 登錄時(shí)間 發(fā)呆時(shí)間 資源占用 當(dāng)前任務(wù)
Tips:w [用戶名稱(chēng)] : 顯示某一用戶相關(guān)信息
who
聯(lián)機(jī)信息,常用參數(shù)
-r 運(yùn)行級(jí)別
whoami
顯示當(dāng)前用戶名
last
最近用戶登錄信息
-數(shù)字 使用數(shù)字作為參數(shù),控制顯示條目。例如
last -10 顯示10條紀(jì)錄
uname
系統(tǒng)信息
-s 內(nèi)核名稱(chēng)(默認(rèn)參數(shù))
-a 全部
-p CPU信息
-n 主機(jī)名
-r 內(nèi)核發(fā)行信息(版本號(hào))
-v 內(nèi)核版本信息
date
顯示、設(shè)定系統(tǒng)時(shí)間
-u 顯示格林尼洛時(shí)間(UTC)
MMDDhhmm[[CC]YY][.ss] 設(shè)定時(shí)間,需要管理員權(quán)限。例如: date 12292359
MM 月份 DD 天數(shù) hh 小時(shí) mm 分鐘 CC 年份前兩位 YY 年份后兩位 ss 秒鐘
秒鐘、年份為可選,例如: date 122923592006.59
+[%X]設(shè)定顯示格式,以下為date默認(rèn)輸出格式:
date +%Y年\ %m月\ %d日\(chéng) %A\ %H:%M:%S\ %Z
格式控制
%n 換行
%t 制表符
小時(shí)
%H(00~23) %I(01~12) %k(0~23) %l(1~12) %p(AM|PM)
分、秒
%M分鐘(00~59)
%S秒(00..61)
%T(hh:mm:ss) %r(hh:mm:ss [AM|PM])
%s 從1970年1月1日00:00:00 UTC到目前為止的秒數(shù)
%X(%H:%M:%S)
%Z時(shí)區(qū)
星期
%a(Sun~Sat) %A(Sunday~Saturday) %w : 一周中的第幾天 (0..6)
年份
%Y(0000~9999) %y(00~99)
月份
%m(01~12) %b %h(Jan~Dec) %B(January~December)
日期
%d(01~31) %j(001~366)
%x(本地格式mm/dd/yy) %D(mm/dd/yy) %c
一年中的第幾周
%U(00~53)以Sunday為一周的第一天 %W(00~53)以Monday為一周的第一天
cal
顯示日歷
文件管理
--------
鏈接
為當(dāng)前文件建立在其它路徑中的訪問(wèn)方法。例如將系統(tǒng)中其它位置的可執(zhí)行文件,鏈接到“/usr/local/bin”目錄下,使用命令調(diào)用。
ls [路徑]
顯示當(dāng)前目錄文件列表
--color 不同屬性以不同顏色顯示(默認(rèn)參數(shù))
-a 全部顯示
-i 顯示inode值
-l 詳細(xì)信息
-F 顯示文件類(lèi)型后綴 目錄/ 鏈接@ 可執(zhí)行文件* 端口文件= 管道文件|
-A 顯示隱藏文件
-R 遞歸顯示子目錄文件列表
-S 按文件大小排序
-t 按修改時(shí)間排序
-u 按訪問(wèn)時(shí)間排序
-d 只顯示目錄,不遞歸顯示目錄下的文件
cd [目錄路徑] | [特殊路徑]
切換目錄
目錄路徑可以使用絕對(duì)路徑或者相對(duì)路徑
特殊路徑:
~ $HOME目錄(默認(rèn)值)
- 上一次目錄
.. 上一級(jí)目錄
. 當(dāng)前目錄
Tips:您可以通過(guò)修改“/etc/environment”文件,來(lái)定義$CDPATH變量,設(shè)定“cd”命令的搜索路徑。
pwd
顯示當(dāng)前路徑
file 文件名
顯示文件類(lèi)型
-i 顯示mime類(lèi)型
du [文件名]
計(jì)算文件或目錄空間占用
-h 人性化顯示。自動(dòng)以G、M、K為單位顯示占用空間大小
-l 重復(fù)計(jì)算硬鏈接文件大小
-L 計(jì)算符號(hào)鏈接文件大小
-a 顯示當(dāng)前目錄子目錄中的文件
-c 顯示文件數(shù)
less 文件名
瀏覽文件,使用VI和Emacs兩種風(fēng)格的鍵綁定。以下為VI風(fēng)格鍵綁定
Ctrl+f(orward) 向下翻一頁(yè) Ctrl+d(own) 向下翻半頁(yè)
Ctrl+b(ackward) 向上翻一頁(yè) Ctrl+u(p) 向上翻半頁(yè)
/ 查找 q(uit) 退出
touch 目標(biāo)文件
創(chuàng)建一個(gè)空文件
cp 源文件目標(biāo)目錄|文件
將源文件復(fù)制為目錄文件,或者將源文件復(fù)制到目標(biāo)目錄。多個(gè)源文件使用空格分隔
cp 源目錄目標(biāo)目錄
將源目錄復(fù)制到目標(biāo)目錄中,如果復(fù)制多個(gè)源目錄,需要使用“-R”參數(shù)
-a 相當(dāng)于-dpr參數(shù)
-d 保留鏈接
-f 強(qiáng)制復(fù)制,覆蓋目標(biāo)文件
-i 覆蓋時(shí)詢(xún)問(wèn)用戶
-p 保留修改時(shí)間和訪問(wèn)權(quán)限
-r -R 遞歸復(fù)制(目錄=目錄)
-l 創(chuàng)建鏈接
-v 顯示過(guò)程
rm 目標(biāo)目錄|文件
-r -R 遞歸刪除
-f 強(qiáng)制刪除(無(wú)需確認(rèn),直接刪除。慎用!)
-i 交互式刪除(詢(xún)問(wèn)用戶)
rmdir 目標(biāo)目錄
刪除目錄時(shí),建議您使用“rm -r”命令
mv 源文件目標(biāo)目錄|文件
相當(dāng)于cp后刪除源文件,也可以作為“重命名”使用。
mv 源目錄目標(biāo)目錄
-r -R 遞歸
ln 源文件鏈接
-s 符號(hào)鏈接
-f 強(qiáng)制鏈接,覆蓋目標(biāo)文件
-i 覆蓋前詢(xún)問(wèn)用戶
文件操作
--------
nano
一個(gè)簡(jiǎn)單輕便的文本編輯器,使用Emacs風(fēng)格的鍵綁定。
split 源文件 [目標(biāo)文件名前綴]
將源文件按一定規(guī)則分割成若干個(gè)目標(biāo)文件。默認(rèn)文件名前綴為“x”
-行數(shù) 按行數(shù)分割文件
-l 行數(shù) 同上
-b 字節(jié)按大小分割文件??梢允褂胋、k、m作單位,不指定單位的情況下,默認(rèn)單位為b
-C 字節(jié) 按大小分割文件,并盡量保持每行的完整
示例:
split -C 100k file.split x
cat 文件名
輸出文件內(nèi)容。用空格分隔多個(gè)文件名,可以將多個(gè)文件內(nèi)容連接到一起輸出。使用重定向合并為一個(gè)文件
-n 在輸出中添加行號(hào)
-b 在輸出中添加行號(hào),空行不編號(hào)
-s 將兩行或以上的空行,合并為一個(gè)空行
示例:
cat xaa xab xac file.split
sort [-o 輸出文件] [-t分隔字符][+起始字段 -結(jié)束字段] [文件]
對(duì)文本內(nèi)容排序
-m 合并文件
-c 檢查文件是否已按規(guī)則排序
-b 忽略行首空格字符
-u 忽略?xún)?nèi)容重復(fù)行
-f 忽略大小寫(xiě)
-l 忽略非打印字符
-M 作為月份比較
-d 按字典順序排序,按照字母、數(shù)字、空格、制表符排序
-r 逆序輸出
more
查看文件內(nèi)容,我們建議您使用“l(fā)ess”
diff 文件名
比較文件
cksum [文件名]
計(jì)算文件的CRC值。不指定文件名則從標(biāo)準(zhǔn)輸入設(shè)備讀入數(shù)據(jù),例如:
echo xxx | cksum
md5sum [文件名]
計(jì)算文件的md5值。同上
權(quán)限管理
--------
一個(gè)文件主要包含下列屬性,“l(fā)s -l”
- rwx rwx rwx user group date filename
111 101 101
其中,第一組為歸屬用戶的權(quán)限,第二組為歸屬群組的權(quán)限,第三組為其它用戶群組的權(quán)限。user為文件的歸屬用戶,group為文件的歸屬群組,date為日期信息,filename為文件名。
可以使用3位的二進(jìn)制數(shù)字來(lái)描述一組權(quán)限,某一權(quán)限對(duì)應(yīng)的數(shù)字為1,則表示具有該種權(quán)限,為0,則不具有該種權(quán)限。
對(duì)于文件夾,必須擁有它的可執(zhí)行權(quán)限,才能夠使用“cd”命令進(jìn)入該文件夾;擁有可讀權(quán)限,才能夠使用“l(fā)s”命令查看該文件夾的文件列表。
root用戶擁有最高權(quán)限。
使用二進(jìn)制數(shù)字來(lái)描述一組權(quán)限,雖然非常直觀,但是3組權(quán)限需要用9位數(shù)來(lái)表示,使用不夠方便。因此我們將三組權(quán)限使用3位8進(jìn)制數(shù)字來(lái)表示。它們的對(duì)應(yīng)關(guān)系為:
r 100 4
w 010 2
x 001 1
將這三位8進(jìn)制數(shù)字相加的結(jié)果,就可以表示該組權(quán)限的具體內(nèi)容,例如:
7=4+2+1=rwx
5=4+1=rx
755=4+2+1 4+1 4+1=rwx r-x r-x
我們還可以使用“a、u、g、o”表示歸屬關(guān)系,使用“=、+、-”表示權(quán)限變化,使用“r、w、x”表示權(quán)限內(nèi)容,
a 所有用戶 u 歸屬用戶 g 歸屬群組 o 其它用戶
= 具有權(quán)限 + 增加權(quán)限 - 去除權(quán)限
r 可讀權(quán)限 w 可寫(xiě)權(quán)限 x 可執(zhí)行權(quán)限
例如:
a+x 給所有用戶增加可執(zhí)行權(quán)限
go-wx 將歸屬群組和其它用戶的可寫(xiě)、可執(zhí)行權(quán)限去掉
u=rwx 歸屬用戶具有可讀、可寫(xiě)、可執(zhí)行權(quán)限
chmod 權(quán)限表達(dá)式文件|目錄
改變文件的權(quán)限。權(quán)限的表達(dá)式可以使用三位8進(jìn)制數(shù)字表示,或者使用augo+-=rxw-s來(lái)表示
-R 遞歸
-v 顯示過(guò)程
-c 類(lèi)似“-v”,僅顯示更改部分
--reference=參考文件或目錄以指定文件為參考改變權(quán)限
示例:
chmod -R a+x path
chmod -Rv 755 path
chown 歸屬用戶[:歸屬群組]文件|目錄
改變文件的歸屬用戶??梢允褂糜脩裘蛘遀ID
-R 遞歸
-v 顯示過(guò)程
-c 類(lèi)似“-v”,僅顯示更改部分
--reference=參考文件或目錄以指定文件為參考改變權(quán)限
示例:
chown user:admin path
chown -R user.admin path
chown user path
chgrp 歸屬群組文件|目錄
改變文件的歸屬群組??梢允褂萌航M名或者GID
參數(shù)同上
SUID、SGID、Sticky bit
某些情況下,需要以可執(zhí)行文件歸屬用戶的身份執(zhí)行該文件,可以為該文件設(shè)置SUID。同樣,設(shè)置SGID能夠以該文件歸屬群組的身份執(zhí)行它。
例如:用戶自行設(shè)定密碼。
出于安全方面的考慮,“/etc/shadow”只能由root用戶直接修改。
-rw------- root root /etc/shadow
這個(gè)時(shí)候,可以為程序“/usr/bin/passwd”設(shè)置SUID,當(dāng)普通用戶執(zhí)行“passwd”命令時(shí),便能夠以該程序歸屬用戶root的身份修改“/etc/shadow”文件。而“passwd”程序自身帶有身份驗(yàn)證機(jī)制,不能通過(guò)驗(yàn)證時(shí)拒絕執(zhí)行,從而保證了安全。
ls -l /usr/bin/passwd
-r-s--x--x root root /usr/bin/passwd
我們發(fā)現(xiàn),歸屬用戶的可執(zhí)行權(quán)限位使用“s”,表示SUID。同樣,歸屬群組的可執(zhí)行權(quán)限位使用“s”,表示SGID。
任何用戶或群組都擁有“其它用戶”的權(quán)限,所以不需要以“其它用戶”身份執(zhí)行文件,其它用戶的可執(zhí)行權(quán)限位便不會(huì)出現(xiàn)“s”。該權(quán)限位可能出現(xiàn)的屬性為“t”,也就是粘著位Stickybit。
ls -ld /tmp
drwxrwxrwt root root /tmp
粘著位表示任何用戶都可能具有寫(xiě)權(quán)限,但只有該歸屬用戶或root用戶才能夠刪除
SUID、SGID、Sticky bit也可以像權(quán)限一樣,使用一個(gè)八位數(shù)表示,如下:
4 SUID
2 SGID
1 Sticky bit
通過(guò)在“chmod”命令中使用四個(gè)八位數(shù)的表達(dá)式,如“4755”,用第一位表示SUID、SGID、或Stickybit,便能夠?yàn)槲募O(shè)置這些特殊權(quán)限。
示例:
chmod -R 4755 path
lsattr [路徑]
查看文件的特殊屬性
-a 全部顯示
-d 只顯示目錄
-R 遞歸
特殊屬性包括:
a:僅供附加用途
b:不更新最后存取時(shí)間
c:壓縮后存放
d:排除在傾倒操作之外
i:不得任意更動(dòng)文件或目錄
s:保密性刪除文件或目錄
S:即時(shí)更新文件或目錄
u:預(yù)防以外刪除
chattr+|-|=abcdisSu路徑
-R 遞歸
-V 顯示過(guò)程
1.概述
雖然 linux 可以在任何一臺(tái) 386 以上的 PC
上運(yùn)行,目前大多數(shù)人使用的都是新型的,帶有各種外設(shè)的桌面PC或者筆記本電腦,這樣,電源管理功能(PM)就逐漸變得越來(lái)越重要。在筆記本電腦上電源管
理可以節(jié)能,延長(zhǎng)電池壽命,而在桌面PC上它可以降低幅射,降溫,延長(zhǎng)外設(shè)使用壽命。現(xiàn)在的操作系統(tǒng)大都內(nèi)置了電源管理支持,例如 Windows 和
Linux。
回頁(yè)首
2.PC機(jī)實(shí)現(xiàn)電源管理的方法
要實(shí)現(xiàn)電源管理,最重要的有兩點(diǎn):第一是需要設(shè)備本身支持節(jié)電功能,比如硬盤(pán),可以通過(guò)指令暫時(shí)關(guān)閉;第二是需要操作系統(tǒng)支持電源管理,這樣就可以在空閑一段時(shí)間之后調(diào)用驅(qū)動(dòng)的電源管理功能關(guān)閉設(shè)備。
兩種電源管理標(biāo)準(zhǔn):APM和ACPI
傳
統(tǒng)的APM(Advanced Power
Management)是一種基于bios的電源管理標(biāo)準(zhǔn),目前的最新版本是1.2,它提供了CPU和設(shè)備電源管理的功能,但是由于這種電源管理方式主要
是由bios實(shí)現(xiàn),所以有些缺陷,比如對(duì)bios的過(guò)度依賴(lài),新老bios之間的不兼容性,以及無(wú)法判斷電源管理命令是由用戶發(fā)起的還是由bios發(fā)起
的,對(duì)某些新硬件如USB和1394的不支持性。
為了彌補(bǔ)APM的缺陷,新的電源管理ACPI應(yīng)運(yùn)而生,這就是ACPI(Advanced Configuration and Power Interface),它主要是將電源管理的主要執(zhí)行者由bios轉(zhuǎn)換成為操作系統(tǒng),這樣可以提供更大的靈活性以及可擴(kuò)展性。
目前的PC機(jī)主板一般同時(shí)支持APM和ACPI兩種標(biāo)準(zhǔn)。
回頁(yè)首
3.linux對(duì)電源管理的支持
內(nèi)核模塊
針對(duì)APM和ACPI兩種不同的標(biāo)準(zhǔn),linux內(nèi)核提供了兩個(gè)不同的模塊來(lái)實(shí)現(xiàn)電源管理功能,這就是apm和acpi。需要注意,apm和acpi是互相沖突的兩個(gè)模塊,用戶在同一時(shí)間內(nèi)只能加載其中之一,如果當(dāng)他們?cè)诩虞d的時(shí)候發(fā)現(xiàn)二者之一已經(jīng)加載,就會(huì)自動(dòng)退出。
在官方發(fā)布的內(nèi)核中APM是較為成熟的電源管理方式,可以完成在Windows下ACPI所能完成的大部分功能。由于官方內(nèi)
核中ACPI的功能比較有限,目前還處于開(kāi)發(fā)版狀態(tài)。所以當(dāng)前的大多數(shù)distribution,如紅帽子默認(rèn)就使用了apm作為電源管理方式。但是值得
注意的是linux中的ACPI實(shí)際上是由一個(gè)單獨(dú)的項(xiàng)目小組模塊進(jìn)行維護(hù)的,當(dāng)前內(nèi)核ACPI的版本實(shí)際上已經(jīng)遠(yuǎn)遠(yuǎn)落后于最新的版本。由于linux穩(wěn)
定版中對(duì)任何新特性的加入都非常謹(jǐn)慎小心,所以我們也許只能等到2.6.x版本的linux誕生后才能看到ACPI的穩(wěn)定全功能版了。不過(guò)我們也可以自己
對(duì)內(nèi)核打最新的ACPI補(bǔ)丁來(lái)獲得這些功能。
Linux 使用哲學(xué)(正確而優(yōu)雅的使用方法) 一文中說(shuō)到,正確的使用 Linux 是不安裝 Xwindow,而是通過(guò)遠(yuǎn)程 ssh 它。那么當(dāng)我們?cè)谝慌_(tái)筆記本上安裝好Linux 后,要想將他合蓋后還能遠(yuǎn)程訪問(wèn),就需要修改一下系統(tǒng)的電源相關(guān)選項(xiàng)。這里以 CentOS為例
systemd 處理某些電源相關(guān)的 ACPI事件,可以通過(guò)從 /etc/system/logind.conf 以下選項(xiàng)進(jìn)行配置:
觸發(fā)的行為可以有
如果要合蓋不休眠只需要把HandleLidSwitch選項(xiàng)設(shè)置為如下即可:
注意:設(shè)置完成保存后運(yùn)行下列命令才生效。
本文名稱(chēng):linux下電源管理命令 linux電源管理機(jī)制
文章地址:http://muchs.cn/article6/doocpig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、App開(kāi)發(fā)、軟件開(kāi)發(fā)、網(wǎng)站排名、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)