您现在的位置是:主页 > news > 网站名和域名/鞍山seo公司
网站名和域名/鞍山seo公司
admin2025/5/24 4:45:44【news】
简介网站名和域名,鞍山seo公司,科技打破垄断全球的霸权,河池个人网站开发公司本意是把笔记本当闹钟用,在windows下也很容易实现, linux 下试过,效果不是特别好,不过还是总结一下。基本命令是 rtcwake ,该命令需要根权限,所以最好是安装sudo。 因为一直用ubuntu,所以也就不…
本意是把笔记本当闹钟用,在windows下也很容易实现, linux 下试过,效果不是特别好,不过还是总结一下。
基本命令是 rtcwake ,该命令需要根权限,所以最好是安装sudo。 因为一直用ubuntu,所以也就不用操心这个了。rtcwake 的基本使用格式如下:
rtcwake -m [type of suspend] -s [number of seconds]
其中 -m 后面的参数描述睡眠模式,支持如下几种
standby -- 该模式貌似只是关闭显示器
mem -- 该模式等效于windows下的待机,就是把内容放内存了
disk -- 该模式等效于windows下的休眠,把内容放硬盘
off -- 该模式等效于完全关机,虽然ACPI不提供官方支持,但是该模式 在许多计算机上是可以用的,具体情况得在具体机器上试验一下。
no -- 该模式并不立即待机,只是设置一个唤醒时间。在此模式下, 可以手动待机。比如设置第二天早上7:00自动唤醒,然后临睡前手动待机。
而 -s 后面的参数则表示休眠的时间(按秒计算)。
此外,还可以利用 -t 参数和 -l 参数结合 date 命令来指定特定的唤醒时间。 当使用 -t 参数时,后面的数字给出唤醒时间与00:00:00 UTC Jan 1, 1970 之间的 时间差(按秒计算)。而 -l 参数则表明系统硬件时钟为本地时间。( -u 参数 表明系统硬件时钟为UTC时间,Linux系统通常设置硬件时钟为UTC时间,然后将之 转换为本地时间。) 利用这两个参数,可以设置计算机第二天7:00am 自动唤醒, 但并不立即待机。
sudo rtcwake -m no -l -t $(date +%s -d 'tomorrow 07:00')
此处我们假定硬件时间为本地时间。
还可以利用 && 在唤醒计算机后执行某命令,例如
rtcwake -m mem -s 120 && firefox
将使计算机待机两分钟后自动唤醒并运行firefox。
结合crontab 即可实现我将笔记本电脑变成闹钟的需求。 比如在crontab中设置每天晚上十点执行
rtcwake -m no -s 28800
即可保证第二天6:00am计算机自动唤醒,此时计算机仍可继续使用, 直到被手动待机。可以在crontab中设置每天6:30am 运行媒体播放器放音乐, 那么闹钟即可实现。
需要注意的是,由于缺乏驱动,某些模式可能无法正确工作,需要在具体 机器上进行测试。
免输密码执行sudo
由于rtcwake 需要根权限,因此将之放入crontab时需要利用sudo,且 在此情形下无法人工输入密码。此时可以利用 sudo 命令的 -S 参数来实现 免输密运行rtcwake。范例如下:
echo "password" | sudo -S rtcwake -m mem -s 3600
其中 "password" 为当前用户的登录密码。执行该命令后,计算机将待机一小时。 注意此方法存在安全隐患,不过鉴于使用的是个人计算机,因此也无所谓了。
crontab 的使用
顺便说说crontab的使用。crontab用来执行周期性命令,其命令格式如下:
crontab [OPTIONS] [file]
其中OPTIONS可以为如下选项:
-e [UserName] 编辑当前(或用户UserName)日程表,如没有则创建。
-r [UserName] 删除当前(或用户UserName)日程表。
-l [UserName] 列出当前(或用户UserName)日程表。
-v [UserName] 列出当前(或用户UserName)日程命令的状态。
日程表格式如下:
f1 f2 f3 f4 f5 program
其中f1表示分钟,f2表示小时,f3表示一个月中的第几天,f4表示月份,f5表示 一周中的第几天,program表示要执行的程序。当时间的值为"*"时,表示任意 分钟,任意小时,任意天等;当时间的值为"a-b"时,表示从第a分钟到第b分钟, 从第a小时到第b小时,从第a天到第b天等;当时间的值为"*/n"时,表示每n分钟, 每n小时,每n天执行一次等;当时间的值为"a,b,c,..."时,表示第a,b,c,…… 分钟,第a,b,c,……小时,第a,b,c,……天要执行等。也可以将日程放在文件 中,利用
crontab FileName
来设定日程表。下面给出一些例子:
在一月,二月,七月和八月,每隔十天的上午6点到晚上23点,每分钟执行一次ls。 注意该命令只在每周日到每周五期间每隔两天执行,即周日,周二,周四执行。
* 6-23 */10 1,2,7,8 0-5/2 ls > /dev/null 2>&1
需要注意的是,每次执行命令后,系统会寄一封邮件给执行命令的用户, 显示执行的内容和结果。若不希望收到该邮件,在命令后加" > /dev/null 2>&1"。 此外,"%"被认为是换行符,因此若是命令行中出现"%"符号,需要用"\"进行转义。 例如:
date +%Y%m%d
需替换为
date +\%Y\%m\%d
周几和月份也可以用英文缩写来表示,例如Mon, Tue, Wed, Thu, Fri, Sat, Sun 表示周一到周日,Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec 表示一月到十二月。
输出重定向
顺便说说输出重定向问题。上面例子中的
program > /dev/null 2>&1
在很多地方都可以用到,其中">"代表将输出重新定向,例如
echo "abc123" > file.txt
表示将"abc123"这一字符串写入文件file.txt(这会导致file.txt之前的内容被抹掉, 如果只是想将该内容放在文件末尾,可用">>"代替">")。"/dev/null"代表空设备文件, 重定向到该文件的内容将消失不复存在(当然也就不会显示)。1表示stdout标准输出, "> /dev/null"等价于"1 > /dev/null"。2表示stderr标准错误,& 类似于取地址操作, 故"2>&1"意味着将2(标准错误)重定向输出到1(标准输出)输出的地址, 即标准错误输出重定向等同于标准输出。这两句合在一起,表示标准输出和标准错误 都重定向到空文件,因此不会有任何输出。
date 命令
上面用到date命令,此处稍微说一下其用法。注意上面之所以用"$()"把 date命令括起来,是一个命令替换,表示用括号内的运行结果定义一个变量, 并把这个变量放在相应位置。此命令替换也可以用反引号 "`date +%s -d 'tomorrow 07:00'`"来代替, 表示把反引号内的语句执行之后的结果放在反引号所在的位置。注意反引号在 键盘左上角esc键下方tab键上方,不要和单引号"'"相混淆。
date命令格式如下
date [-u] [-d datestr] [-s datestr] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
该命令可用于设定或显示系统时间。当用于显示时,可设定显示格式,语法为 加号后接标记,可用标记如下:
%H: 小时(00-23)
%I: 小时(01-12)
%k: 小时(0-23)
%l: 小时(1-12)
%M: 分钟(00-59)
%p: 显示本地AM或PM
%r: 直接显示时间(12小时制,hh:mm:ss [AP]M)
%s: 从1970年1月1日00:00:00 UTC到目前为止的秒数
%S: 秒(00-60)
%T: 直接显示时间(24小时制)
%X: 相当于%H:%M:%S
%a: 星期几(Sun-Sat)
%A: 星期几(Sunday-Saturday)
%b: 月份(Jan-Dec)
%B: 月份(January-December)
%c: 直接显示日期与时间
%d: 日(01-31)
%D: 直接显示日期(mm/dd/yy)
%j: 一年中的第几天(001-366)
%m: 月份(01-12)
%U: 一年中的第几周(00-53,以Sunday为一周中的第一天)
%w: 一周中的第几天(0-6)
%W: 一年中的第几周(00-53,以Monday为一周中的第一天)
%x: 直接显示日期(mm/dd/yy)
%y: 年份的最后两位数字(00.99)
%Y: 完整年份(0000-9999)
若是不以加号作为开头,则表示要设定时间,而时间格式为MMDDhhmm[[CC]YY][.ss], 其中MM为月份,DD为日,hh为小时,mm为分钟,CC为年份前两位数字, YY为年份后两位数字,ss为秒数。
date命令参数如下:
-d datestr: 显示datestr中所设定的时间
-s datestr: 将系统时间设为datestr中所设定的时间
-u: 显示目前的格林威治时间