包含linux发送at命令的词条

linux命令详解之at Linux下,有两个命令可以用来作为计划任务而执行,
要使用一次性任务计划,linux必须要有负责这个计划任务的服务,那就是atd服务
但是并非所有的linux distribution都默认会打开,我们需要手动激活爱听的任务
如果服务未安装,则需要手动安装
#:yum install - y at 或 #:apt-get install at
如果担心启动是否执行OK的话,可使用命令查看:
#:ps aux |grep atd
或者使用
systemctl status atd
# 查阅一下 atd 目前的状态,Active 状态应是 running
使用 at 这个指令来产生所要运行的工作,并 将这个工作以文本文件的方式写入 /var/spool/cron/atjobs/ 目录内,该工作便能等待 atd 这个服务的取用与执行了 。不过,因为安全的理由 , 并不是所有的人都可以进行 at 工作调度!
at 的使用限制是利用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行的! 加上这两个文件后,at 的工作情况其实是这样的:
在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的,因此系统通常会保留一个空的 /etc/at.deny 文件,意思是允 许所有人使用 at 指令的意思 (您可以自行检查一下该文件) 。不过,万一你不希望有某些 使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行 。
单一工作调度的进行就使用 at 这个指令!这个指令的运行非常简单!将 at 加上一个时间即可!基本的语法如下:
事实上,当我们使用 at 时会进入一个 at shell 的环境来让使用者下达工作指令,此时,建议 你最好使用绝对路径来下达你的指令,比较不会有问题!由于指令的下达与 PATH 变量有关 , 同时与当时的工作目录也有关连 (如果有牵涉到文件的话),因此使用绝对路径来下达 指令,会是比较一劳永逸的方法 。举例来说,你在 /tmp 下达 at now然后输入 mail -s "test" root.bashrc ,问一下,那个 .bashrc 的文件会是在哪里?答案是 /tmp/.bashrc !因为 at 在运行时 , 会跑到当时下达 at 指令的那个工作目录运行!
要注意的是,如果在 at shell 内的指令并没有任何的讯息输出 , 那么 at 默认不会发 email 给执行者的 。如果你想要让 at 无论如何都发一封 email 告知你是否执行了指令 , 那么 可以使用“ at -m 时间格式 ”来下达指令! at 就会传送一个讯息给执行者,而不论该指令执行有无讯息输出了!
如果要在某某时刻,在我的终端机显示出 Hello 的字样,可以通过终端机的设备来处理!假如你在 tty1 登陆(在命令行里面输入 tty 可以查看),则可以使用 echo "Hello"/dev/tty1。
at 有另外一个很棒的优点, 由于 at 工作调度的使用上,系统会将该项 at 工作独立出你的 bash 环境中,直接交给系统的 atd 程序来接管,因此 , 当你下达了 at 的工作之后就可以立刻离线了,剩下的工作就完全交 给 Linux 管理即可!所以如果有长时间的网络工作时,使用 at 可以让你免除网络断线后的困扰 。
其实 batch 是利用 at 来进行指令的下达!只是加入一些控制参数而已 。这个 batch 神奇的地方在于:他会在 CPU 的工作负载小于 0.8 的时候,才进行你所下达的工作任务啦!
那什么是工作负载 0.8 呢?这个工作负载的意思是: CPU 在单一时间点所负责的工作数量 。不是CPU 的使用率喔! 举例来说,如果我有一只程序他需要一直使用 CPU 的运算功能,那么此 时 CPU 的使用率可能到达 100%,但是 CPU 的工作负载则是趋近于“ 1 ”,因为 CPU 仅负责一个工作!如果同时执行这样的程序两支呢? CPU 的使用率还是 100% , 但是工作负载 则变成 2 了! 所以也就是说 , 当 CPU 的工作负载越大,代表 CPU 必须要在不同的工作之间进行频繁的工 作切换 。因为一直切换 工作,所以会导致系统忙碌?。?系统如果很忙碌 , 还要额外进行 at , 不太合理!所以才有 batch 指令的产生!
下面来实验一下 batch 好了!为了产生 CPU 较高的工作负载,我们用了 计算 pi 的脚本 , 连续执行 4 次这只程序,来仿真高负载,然后看看batch 的工作现象 。
使用 uptime 可以观察到 1, 5, 15 分钟的“平均工作负载”量,因为是平均值,所以当我们如上 表删除掉四个工作后,工作负载不会立即降低,需要一小段时间让这个 1 分钟平均值慢慢回 复到接近 0 ?。〉毙∮?0.8 之后的“整分钟时间”时,atd 就会将 batch 的工作执行掉了!
什么是“整分钟时间”呢?不论是 at 还是 crontab,他们最小的时间单位是“分 钟”,所以,基本上 , 他们的工作是“每分钟检查一次”来处理的! 就是整分 (秒为 0 的时候),同时,你会发现其实 batch 也是使用 atq/atrm 来管理的!
linux中at的执行结果放在哪里之前说了使用crontab实现定时执行任务 , 假如我们只是想要让特定任务运行一次,那么 , 这时候就要用到at监控程序了 。
一、at服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业 。
service atd start//启动服务
service atdstop//关闭服务
service atd restart//重启服务
service atd reload//重新载入配置
service atd status//查看服务状态
二、at在配置文件:
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序 。
三、参数详解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存 , at 的资料是存放在所谓的 queue 中 , 使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档 。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
at命令执行流程
# at 2:05 tomorrow
at/home/kyle/do_job
at Ctrl D
AT Time中的时间表示方法
-----------------------------------------------------------------------
时 间 例子 说明
-----------------------------------------------------------------------
Minuteat now5 minutes任务在5分钟后运行
Hourat now1 hour任务在1小时后运行
Daysat now3 days任务在3天后运行
Weeksat now2 weeks任务在两周后运行
Fixedat midnight任务在午夜运行
Fixedat 10:30pm任务在晚上10点30分
Fixedat 23:59 12/31/2018 任务在2018年12月31号23点59分
linux中at命令linux
at
命令详解
使用方式
:
at
-V
[-q
queue]
[-f
file]
[-mldbv]
TIME
说明
:
at
可以让使用者指定在
TIME
这个特定时刻执行某个程序或指令,TIME
linux发送at命令的格式是
HH:MM其中的
HH
为小时,MM
为分钟,甚至linux发送at命令你也可以指定
am,
pm,
midnight,
noon,
teatime(就是下午
4
点锺)等口语词 。
如果想要指定超过一天内的时间,则可以用
MMDDYY
或者
MM/DD/YY
的格式,其中
MM
是分钟,DD
是第几日 , YY
是指年份 。另外,使用者甚至也可以使用像是
now
时间间隔来弹性指定时间,其中的时间间隔可以是
minutes,
hours,
days,
weeks 。
另外 , 使用者也可指定
today

tomorrow
来表示今天或明天 。当指定linux发送at命令了时间并按下
enter
之后,at
会进入交谈模式并要求输入指令或程序 , 当linux发送at命令你输入完后按下
ctrl D
即可完成所有动作,至于执行的结果将会寄回你的帐号中 。
参数
:
-V
:
印出版本编号
-q
:
使用指定的伫列(Queue)来储存 , at
的资料是存放在所谓的
queue
中 , 使用者可以同时使用多个
【包含linux发送at命令的词条】queue , 而
queue
的编号为
a,
b,
c...
z
以及
A,
B,
...
Z

52

-m
:
即使程序/指令执行完成后没有输出结果,
也要寄封信给使用者
-f
file
:
读入预先写好的命令档 。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
-l
:
列出所有的指定
(使用者也可以直接使用
atq
而不用
at
-l)
-d
:
删除指定
(使用者也可以直接使用
atrm
而不用
at
-d)
-v
:
列出所有已经完成但尚未删除的指定
linux minicom 如何输入at1.
配置串口
在使用
minicom前需进行配置,包括串口设备名、波特率、奇偶校验、硬件流控等,以便正确连接串口设备,连接上串口设备后才能发送AT命令 。
有两种方式可配置minicom:
一种是用minicom
-s
命令直接从命令行进入配置菜单;
另一种方式是用不带参数的minicom命令进入minicom后,按
Ctrl A
切换到命令模式,命令模式下按o进入配置菜单 。
Modem
and
dialing配置项中有个
Init
string
的设置,会在初始化串口后自动发送预设的AT命令 。
串口初始化完成后,就可手动发送AT命令了 。
2.
保存配置
默认的minicom配置文件为/etc/minicom/minirc.dfl,推荐不覆盖此文件,而是用Save
setup
as..菜单把配置参数以文件的形式保存到自己的用户目录下,如~/.mySerial,下次就可直接用
minicom
~/.mySerial
命令调用该参数文件了 。
19. Linux的at定时任务调度与crond不同的是,at任务调度是一次性的,而crond是重复性的
1.1 at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
1.2 默认情况下,atd守护进程每60s检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
1.3 at命令是一次性定时计划任务,执行完一个任务后就不再执行这个任务了
1.4 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令查看
ps -ef | grep atd 可以检查atd是否在运行
at [选项] [时间]
按两次 ctrl d 结束at命令的输入
4.1 当天的hh:mm(小时:分钟),假如这个时间已经过去,那么就第二天的这个时间执行 。例如04:00
4.2 模糊的词语,例如midnight、noon、teatime(下午茶时间,16:00左右)
4.3 采用12小时计时制,例如8am
4.4 指定执行命令的具体日期,格式为month dat(月 日)或者mm/dd/yy或者dd.mm.yy , 指定的日期必须跟着写在在指定时间的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4点整执行
4.5 相对计时法,指定格式为nowcount time-units,now就是当前时间,time-units是时间单位,可以是minutes、hours、days、weeks 。count是时间的数量 , 例如:now5 minutes
4.6 直接用today、tomorrow来指定完成命令的时间
5.1 2天后的下午5点,执行/bin/ls /home指令
at 5pm2 days 按回车键
然后写下那个时刻要执行命令 /bin/ls /home
最后按两次ctrl d退出at指令
5.2 atq指令可以直接执行 , 查看系统中待执行的工作任务
5.3 明天17:00输出时间到指定文件内 /root/date100.log
at 17:00 tomorrow 按回车键
date/root/date100.log
按两次ctrl d退出at指令的输入
5.4 2分钟后
at now2 minutes
5.5 删除已经设置的任务 , atrm 编号
可以用atq列出待执行的任务,列出后第一列就是job编号
求教linux中串口发送at命令的问题要满足这三个条件:
1,单开线程自动写at
2 , 单开线程读at
3,打开文件读配置,将读出来后的配置文件放到log文件里去 。
这边记录下如何在ui下开一个线程的过程:用一个handler变量调用handler.post函数,然后在runnable里面重写run接口就可以 , 实际上,这样调用出来的线程跟ui主线程是一个线程,不会创建新的 。所以这边如果要用线程创建的话 , 必须
wthread = new HandlerThread("thread");
wthread.start();
wHandler = new Handler(wthread.getLooper());
wHandler.post(runnable);
这时重写runnable的run函数才可以实现重新开启一个线程 。
在这个线程里面可以读写串口 , 但是界面的刷新不能在这个子线程里面做 。必须主线程在做一个handler,然后子线程调用Message 变量传进主线程的handler.sendMessage(msg);然后主线程用handlerMessage接收子线程传过来的消息 , 在主线程里面刷新界面 。
关于linux发送at命令和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读