2008年1月22日星期二

Oracle学习笔记20080121

为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:
$ crontab davecron
这样可以提交该文件
$ crontab -e可编辑
crontab文件(进去后发觉编辑界面简直难受的要死,还是vim好)
$ crontab -l可列出crontab crontab -l > ...可将文件输出到别的地方

在编辑crontab的时候可以加入执行语句
30 3 1 * * /bin/find -name "core" -exec rm {} \;该语句的意思是每个月1号3点半把core文件找出来然后删掉(ubuntu下不知道,难道需要只能切换用户或者直接root?)

删除crontab 直接$crontab -r
如果不小心误删了crontab文件,假设你在自己的$HOME目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/,其中是用户名。
如果由于权限问题无法完成拷贝,可以用:
$ crontab 其中是你在$HOME目录中副本的文件名。
我建议你在自己的$HOME目录中保存一个该文件的副本。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<>,否则你将丢失crontab文件。

at命令允许用户向cron守护进程提交作业,使其在稍后的时间运行。
也可通过/etc/at.allow和/etc/at.deny来控制用户运用at命令
at命令的基本形式为:
at [-f script] [-m -l -r] [time] [date]
其中,-f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。
atq命令具有相同的作用。
-r 清除作业。为了清除某个作业,还要提供相应的作业标识(ID);有些UNI X变体只接受atrm作为清除命令。
-m 作业完成后给用户发邮件。
time at命令的时间格式非常灵活;可以是H、HH.HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。还可以使用a.m.或p.m .。
date 日期格式可以是月份数或日期数,而且at命令还能够识别诸如today、tom orrow这样的词。
at的使用方法如果你想提交若干行的命令,可以在at命令后面跟上日期/时间并回车。
然后就进入了at命令提示符,这时只需逐条输入相应的命令,然后按退出。
$at 21:10
at>find / -name "passwd" -print
at>
就是

如果希望向at命令提交一个shell脚本,使用其命令行方式即可。在提交脚本时使用-f选项。
例子:
$at 3.00pm tomorrow -f /apps/bin/db_table.sh还可以使用echo命令向
at命令提交作业:$ echo find /etc -name "passwd" -print at now +1 minute

$at -l后其中,第一行是作业标识,后面是作业运行的日期/时间。最后一列a代表at。还可以使用atq命令来完成同样的功能,它是at命令的一个链接。当提交一个作业后,它就被拷贝到/var/spool/at目录中,准备在要求的时间运行。

清除作业的命令格式为:atrm [job no] 或at -r [job no]
当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。
可以使用&命令把作业放到后台执行。
该命令的一般形式为:命令 &
不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
command >out.file 2>&1 &
在后台提交命令现在我们运行一个find命令,查找名为“srm.conf”的文件,并把所有标准输出和错误输出重定向到一个叫作find.dt的文件中:
$find /etc -name "srm.conf" -print > find.dt 2>&1 &
[1] 27015
27015是命令提交后系统给的进程号,当该作业完成时,按任意键(一般是回车键)就会出现一个提示:
当一个命令在后台执行的时候,可以用提交命令时所得到的进程号来监控它的运行。
在前面的例子中,我们可以按照提交ps1时得到的进程号,用ps命令和grep命令列出这个进程:
例如$ps x grep 28305如果不支持x命令可以$ps -ef grep 28305

杀死后台进程kill -signal [process_number]
nohup如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户之后继续运行相应的进程.Nohup就是不挂起的意思(nohang up)。
该命令的一般形式为:nohup command &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1
在上面的例子中,输出被重定向到myout.file文件中。

一次提交几个作业如果希望一次提交几个命令,最好能够把它们写入到一个shell脚本文件中,并用nohup命令来执行它。例如,下面的所有命令都用管道符号连接在一起;我们可以把这些命令存入一个文件,并使该文件可执行。

第四章文件名
*好可以匹配任何字符
?比配单个字符
[...]和[!...]使用[ . . . ]可以用来匹配方括号[ ]中的任何字符。
在这一方法中,还可以使用一个横杠-来连接两个字母或数字,以此来表示一个范围。
在下面的例子中,列出了以i或o开头的文件名:类似于ls [io]*

$ ls [A-Z]*查看A-Z的字母
$ ls .*查看隐藏文件

使用&&使用&&的一般形式为:
命令1 && 命令2这种命令执行方式相当地直接。&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功 &&那么执行这个命令”。举例:
$ mv /apps/bin /apps/dev/bin && rm -r /apps/bin

使用 的一般形式为:
命令1 命令2的作用有一些不同。如果 左边的命令(命令1)未执行成功,那么就执行 右边的命令(命令2);或者换句话说,“如果这个命令执行失败了 那么就执行这个命令”。
在这里不只可以使用系统命令;
这里我们首先对month _ end.txt文件执行了一个名为comet的shell脚本,如果该脚本未执行成功,该shell将结束。$ comet month_end.txt exit

如果希望把几个命令合在一起执行,shell提供了两种方法。既可以在当前shell也可以在子shell中执行一组命令。为了在当前shell中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令用圆括号()括起来。
它的一般形式为:(命令1;命令2;. . .)如果使用{ }来代替(),那么相应的命令将在子shell而不是当前shell中作为一个整体被执行,只有在{ }中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行,否则在当前shell执行。它的一般形式为:{命令1;命令2;. . . }
$comet month_end (echo "Hello"mail user;exit)
------------------------------
清早吧早特别霉,链条拖链,还够不到,到公司拿家伙下楼修,天那个冷啊,还得把盖泥板拆下来修。

没有评论: