linux延时运行命令,linux中的延时函数
linux计划任务如何实现延时执行脚本,求简洁实例
两个方法:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、大观网站维护、网站推广。
1)crontab中的时间设定最小可以到分钟,如果你的延时是分钟级别的,直接放大crontab中的分钟设定即可。
2)修改脚本,在脚本开头(当然要在shell声明语句如#!/bin/bash之后)加usleep(微秒级)或sleep命令(秒级),也可以实现延时。
4-3 Linux中的会话和作业(1、后台运行 & 和 查看后台 jobs)
一、会话和作业的概念:
1、进程:Linux自身运行的独立程序。
2、进程组:进程组是一个或多个进程的集合。
_____________________________________________________
Linux包括三种不同类型的进程,每种进程都有自己的特点和属性:
3、交互进程 —— 由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
4、批处理进程 —— 这种进程和终端没有联系,是一个进程序列。
5、监控进程(也称守护进程)—— linux系统启动时启动的进程,并在后台运行。
_______________________________________________________________
6、会话:一个用户登录终端后会新建一个会话,它是和控制终端产生IO交互的过程。这个过程可以称之为会话期。会话期可以产生一个 或 多个进程组的集合。(比喻打电话,首先要电话的接通,接通了才可以产生人与人之间的信息交互。在此会话期间可以产生一个或多个不同范畴的话题)
7、作业:作业类似于用户提交给系统的一个任务。一个作业可以包含一个或多个进程共同完成一个任务。(比喻会议上BOSS需要完成一个任务,根据需求可以分配到一个或多个人配合完成。)
8、作业控制:指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。这样用户就能在多个独立作业间进行切换。(比喻正在进行常规工作的员工,经理突发一个事情需要协助处理。这位员工放下手上的工作(挂起)。首先处理经理安排的事情,完事后再处理常规工作的事情。)
二、通过 date 和 sleep 命令理解前台、后台作业。date 命令是显示系统时间,sleep 命令是设置延时。
1、前台执行命令:
1)、前台执行命令。输入输出都是按部就班,执行完一个命令再执行下一个命令,把结果打印出来。
红色下划线:date 查看当前日期时间。
黄色下划线:sleep 10 延时10秒。
蓝色下划线:date 查看当前日期时间。
通过结果可以看出第一个 date 打印出日期时间后,延时10再执行一个 date 打印日期时间。两个时间相隔 10 秒。
2)、系统正在执行前台的命令时,再输入命令是不会马上执行。要执行完毕前面的命令才可以执行后面输入的命令。同样用 date 和 sleep做实验:
红色下划线:date 输出当前日期时间。
黄色下划线:sleep 60 系统执行延时 60 秒的操作。 [root@localhost ~]# 用户标识符没有出现。虽然光标可以进行输入,但输入的 ls /tmp/ 命令并没有马上执行,没有输出。因为此时,前台正在执行 sleep 60 延时60秒的指令。
红色下划线:等待 sleep 60 执行完毕后,再执行一个 date 输出当前日期时间。两个 date 之间时间相隔 60 秒。
黄色下划线:待整条 date ; sleep 60 ; date 命令都执行完毕后,再执行刚才延时 60 秒时输入的 ls /tmp/ 命令,输出结果。
蓝色下划线:[root@localhost ~]# 用户标识符出现才算前台命令执行完毕,可以继续正常操作。
2、后台执行命令:
:命令后面使用 符号,可以让命令在后台执行。
jobs:可以查看正在后台运行的作业。
jobs选项:-l —— 除了列出作业号外,同时列出 PID。
-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。
1)、后台运行的命令进程不会影响到前台命令进程。
红色下划线:sleep 30 —— 把 sleep 30 丢到后台运行。
黄色下划线:通过 jobs 命令跟踪进程情况。(Runing —— 正在运行,Done —— 完成)
绿色下划线:sleep 后台运行期间进行了 ls 和 tail 命令的查询输出,正常运作。
蓝色下划线:jobs 没有输出,代表 sleep 已经完结,没有后台进程。
2)、挂起 和 中断后台运行的命令。
Ctrl+c:中断后台进程。Ctrl+z:挂起后台进程。
jobs 命令可以查看到挂起的命令,不可以查看中断的命令。
3)、jobs选项:-l —— 除了列出作业号外,同时列出 PID。
红色下划线:sleep 100 ,后台运行延时100秒的程序。
黄色下划线:jobs -l 列出所有后台进程(-l —— 含作业号、PID、运行状态 和 执行的命令。)
运行状态有 Running 、Stopped 和 Done,后台正在运行会显示 Running,当运行完毕后用 jobs 查看会显示 Done,并且命令后面的 符号也会消失。Done只出现一次,下次再用 jobs 查看后台程序就没有了系统曾提示过 Done 的命令。挂起正在运行的命令,后台会显示 Stopped 暂停状态。
-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。
Linux常用基本命令大全介绍
学习Linux系统,命令是最基础的一部分,有着很重要的地位,所以入门必须掌握好常用命令。下面由我为大家整理了Linux系统常用的基本命令入门篇,希望对大家有帮助!
Linux系统常用的基本命令入门篇一、基础命令
1.Linu x的进 入与退出系统
进入Linux系统:
必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号:
1.root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。
2.普通用户--这个帐号供普通用户使用,可以进行有限的操作。
一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统。影响系统的正常运行。
用户登录分两步:第一步,输入用户的登录名,系统根据该登录名识别用户;第二步,输入用户的口令,该口令是用户自己设置的一个字符串,对其他用户是保密的,是在登录时系统用来辨别真假用户的关键字。
当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:
[root@loclhost/root] #
这时就可以对系统做各种操作了。注意超级用户的提示符是ldquo;#rdquo;,其他用户的提示符是ldquo;$rdquo;。
2.修改口令
为了更好的保护用户帐号的安全,Linux允许用户随时修改自己的口令,修改口令的命令是passwd,它将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令,以避免用户无意中按错键。如果用户忘记了口令,可以向系统管理员申请为自己重新设置一个。
3.虚拟控制台
Linux是一个真正的多用户 操作系统 ,它可以同时接受多个用户登录。Linux还允许一个用户进行多次登录,这是因为Linux和UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台进行多次登录。虚拟控制台的选择可以通过按下Alt键和一个功能键来实现,通常使用F1-F6例如,用户登录后,按一下Alt-F2键,用户又可以看到"login:"提示符,说明用户看到了第二个虚拟控制台。然后只需按Alt-F1键,就可以回到第一个虚拟控制台。 一个新安装的Linux系统默认允许用户使用Alt-F1到Alt-F6键来访问前六个虚拟控制台。虚拟控制台可使用户同时在多个控制台上工作,真正体现Linux系统多用户的特性。用户可以在某一虚拟控制台上进行的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。
退出系统
不论是超级用户,还是普通用户,需要退出系统时,在shell提示符下,键入exit命令即可。
4.查看命令帮助信息
man命令
man命令用于查询命令和程序的使用 方法 和参数。
例如:
man ls
将显示ls命令的基本格式和使用方法
Linux系统常用的基本命令入门篇二、关机重启命令
首先,是关机/重启命令,仅在虚拟机时使用,实际工作中用不到
reboot 一般不跟参数使用,输入指令即可重启
shutdown 一般需要跟参数,例:
shutdown -r 延时多少分钟重启,一般使用now
shutdown -r now 立即重启
shutdown -f 强制重启
跟windows一样,linux也存在注销功能
exit
1)halt
halt 可不接参数
halt -f 强制关机
2)poweroff
poweroff 可不接参数使用
poweroff -f 强制关机
3)init 0
4)shutdown 不可单独使用
shutdown -h 分钟数 延时多久关机
shutdown -h now 立即关机
Linux系统常用的基本命令入门篇三、vi编辑
vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。
Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。
默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用ldquo;escrdquo;键,从命令模式切换到编辑模式使用ldquo;Ardquo;、ldquo;ardquo;、ldquo;Ordquo;、ldquo;ordquo;、ldquo;Irdquo;、ldquo;irdquo;键。
vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号ldquo;:rdquo;开头输入。常用内置命令如下:
1 Ctrl+u:向文件首翻半屏;
2 Ctrl+d:向文件尾翻半屏;
3 Ctrl+f:向文件尾翻一屏;
4 Ctrl+b:向文件首翻一屏;
5 Esc:从编辑模式切换到命令模式;
6 ZZ:命令模式下保存当前文件所做的修改后退出vi;
7 :行号:光标跳转到指定行的行首;
8 :$:光标跳转到最后一行的行首;
9 x或X:删除一个字符,x删除光标后的,而X删除光标前的;
10 D:删除从当前光标到光标所在行尾的全部字符;
11 dd:删除光标行正行内容;
12 ndd:删除当前行及其后n-1行;
13 nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
14 p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
15 P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
16 /字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
17 ?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
18 a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,ldquo;s/rdquo;表示进行替换操作;
19 a:在当前字符后添加文本;
20 A:在行末添加文本;
21 i:在当前字符前插入文本;
22 I:在行首插入文本;
23 o:在当前行后面插入一空行;
24 O:在当前行前面插入一空行;
25 :wq:在命令模式下,执行存盘退出操作;
26 :w:在命令模式下,执行存盘操作;
27 :w!:在命令模式下,执行强制存盘操作;
28 :q:在命令模式下,执行退出vi操作;
29 :q!:在命令模式下,执行强制退出vi操作;
30 :e文件名:在命令模式下,打开并编辑指定名称的文件;
31 :n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
32 :f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
33 :set nu:在命令模式下,用于在最左端显示行号;
34 :set nonu:在命令模式下,用于在最左端不显示行号;
35 :1,3y 复制第一行到第三行
36 :1,3d 删除第一行到第三行
37 :1,3s/str/str_new/g 替换第一行到第三行中的字符串
38 :1,3s/str/str_new 替换第一行到第三行中的字符串第一个字符
39 :1,3 g/str /d 删除第一行到第三行中含有这个字符串的行
Linux常用命令一、查询相关
find
按规则查找某个文件或文件夹,包括子目录
find . -name '_sh' -- 以.sh结尾的文件
find . -name '_hannel_ -- 包含channel字符的文件
find . -name 'build_ -- 以build开头的文件
find . -name 'abc??' -- abc后面有两个字符的文件
grep
查找内容包含指定的范本样式的文件,Global Regular Expression Print
grep -n pattern files -- 规则 -n表示显示行号
grep -n 'PostsActivity' AndroidManifest.xmlgrep -n '\d' AndroidManifest.xmlgrep 'aapt' build-channel.xml -- 文件中包含字符串的所有地方
grep -n 'aapt' build-channel.xml -- 文件中包含字符串的所有地方,并显示行号
ps -e | grep java -- 所有java进程
ps -e | grep -i qq --所有qq进程,不区分大小写
find . -name '_hannel.xml' | xargs grep -n 'aapt' -- 在以channel.xml结尾的文件中查找包含lsquo;aaptrsquo;关键字的地方
ls | grep 'channel' -- 包含channel关键字的文件
which
在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
which zipwhich grep
Linux常用命令二、查看命令
tail
tail [-f] [-c Number | -n Number | -m Number | -b Number | -k Number] [File]
从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。
tail -f test.log,循环查看文件内容,Ctrl+c来终止
tail -n 5 test.log,显示文件最后5行内容
tail -n +5 test.log,从第5行开始显示文件
more
more [-dlfpcsu] [-num] [+/ pattern] [+linenum] [file...]
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
more +3 test.log,显示文件中从第3行起的内容
more -5 test.log,设定每屏显示行数
ls -l | more -5,每页显示5个文件信息
more +/day3 test.log,查找第一个出现"day3"字符串的行,并从该处前两行开始显示输出
less
less [options] [file...]
与more命令一样,less命令也用来分屏显示文件的内容。但是二者存在差别:less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
less test.log,查看文件
ps -ef | less,查看进程信息并通过less分页显示
history | less,查看命令历史使用记录并通过less分页显示
less test1.log test2.log,浏览多个文件,n和p切换文件
watch
watch [options] command
每隔一段时间重复运行一个命令,默认间隔时间是2秒。要运行的命令直接传给shell(注意引用和转义特殊字符)。结果会展示为全屏模式,这样你可以很方便的观察改变
watch -n 60 date,执行date命令每分钟一次,输入^C 退出
watch -d ls -l,查看目录变化
watch -d rsquo;ls -l | fgrep joersquo;,想找joe用户的文件
watch -d 'ls -l|grep scf',监测当前目录中 scf' 的文件的变化
watch -n 10 'cat /proc/loadavg',10秒一次输出系统的平均负载
watch -n 1 -d netstat -ant,每隔一秒高亮显示网络链接数的变化
watch -n 1 -d 'pstree | grep http',每隔一秒高亮显示http链接数的变化
Linux常用命令三、文件相关
vi
vi file
按i键,进入编辑模式
按esc键,进入命令模式
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
chmod
change mode,变更文件或目录的读、写、运行权限
chmod [-cfvR] [--help] [--version] mode file...
mode:权限设定字串,格式如下 : [ugoa...][[+-=][rw xX ]...][,...]
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
chmod也可以用数字来表示权限,语法为:chmod abc file,如chmod 777 file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4,w=2,x=1
chmod 777 file,等同于 chmod a=rwx file
chmod ug=rwx,o=x file,等同于 chmod 771 file
chmod 4755 filename,可使此程序具有root的权限
ls -l 可以查看列出当前用户的文件权限
zip
zip -r filename.zip filesdir
zip -r test.zip ./_把当前所有文件压缩到test.zip
zip -r test.zip test,把test文件所有文件及目录,要是到test.zip
zip -d test.zip test.txt,删除压缩文件中test.txt文件
zip -m test.zip ./test.txt,向压缩文件中test.zip中添加test.txt文件
zip -r test.zip file1 file2 file3 filesdir,处理多个文件和目录,空格隔开
unzip
unzip zip-file,解压到当前目录
unzip -d dst-dir zip-file,解压到指定的目录,-d后为指定目录
unzip -n zip-file,不覆盖已经存在的文件,-n为不要覆盖原有的文件
unzip -n -d dst-dir zip-file,解压到指定的目录,不覆盖已经原有的文件
unzip -o -d dst-dir zip-file,-o不必先询问用户覆盖原有文件
unzip -l zip-file,仅查看压缩文件内所包含的文件
tar
tar cvf test.tar test,把test下所有文件和目录做备份tar czvf test.tar.gz test,把test下所有文件和目录做备份并进行压缩tar xzvf test.tar.gz,把这个备份文件还原并解压缩tar tvf test.tar | more,查看备份文件的内容,并以分屏方式显示在 显示器 上
tar czvf test.tar.gz test --exclude=test/svn,备份压缩并排除目录
touch
linux定时任务怎么实现:延时执行任务,然后进入一个定时执行任务,最后将任务删除?
提供个思路,先用at设定在3天后执行任务a,然后任务a里是将每8小时执行任务b的要求写入crondtab,任务b中设定先读取文件,看是否达到8次,达到了则删除自己,没有达到则执行任务在执行结束后写入某个文件来计数。
说一下几个关键点,at可能需要安装,并且你要确定atd进程已经启动,并且这个设定at的功能也可以通过单独脚本实现
删除自己则可以使用rm -f $0 实现
写入crondtab可以根据用户和系统不同文件位置不同,如centos7的root用户在/var/spool/cron/root,修改该文件可以使用sed -i或者awk等实现。
以上是bash脚本实现思路
如果写一个python当守护进程也可以实现过程类似。
linux 中实现延迟45分钟后执行命令,写了一段c程序,实现延迟,接下来,该如何执行命令呢,也就是shell
1、system(执行shell 命令)
相关函数 fork,execve,waitpid,popen
表头文件 #includestdlib.h
定义函数 int system(const char * string);
函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c
string来执行参数string字符串所代表的命令,此命令执行完后随
即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时
搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值 如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-
1。若参数string为空指针(NULL),则返回非零值。如果system()调
用成功则最后会返回执行shell命令后的返回值,但是此返回值也有
可能为system()调用/bin/sh失败所返回的127,因此最好能再检查
errno 来确认执行成功。
附加说明 在编写具有SUID/SGID权限的程序时请勿使用system(),system()会
继承环境变量,通过环境变量可能会造成系统安全的问题。
例如:
#includestdlib.h
main()
{
system(“ls -al /etc/passwd /etc/shadow”); //换成./test.sh 可执行相关脚本
}
当然也可以用管道或exec函数族来调用shell
linux中shutdown -t 参数怎么用?
语法:
shutdown
[OPTION]...
TIME
[MESSAGE]
命令:shutdown,附带选项
[OPTION],TIME
是延时时间(秒),[MESSAGE]是提示信息。
-t参数是延迟关机或者重启的时间,例如:
shutdown
-f
-s
-t
30
//30秒后强制关机
网站题目:linux延时运行命令,linux中的延时函数
本文来源:http://myzitong.com/article/hdoggs.html