Linux计划任务入门详解
linux操作系统任务十shell 编程基础
![linux操作系统任务十shell 编程基础](https://img.taocdn.com/s3/m/3c2a2066bf1e650e52ea551810a6f524ccbfcb1f.png)
不被引号包围的字符串中出现变量时也会被解析,这一点和双引号" 不被引号包围的字符串 "包围的字符串一样。字符串中不能出现空格,否则空格后边的字符
串会作为其他变量或者命令解析。
管道操作
Shell数组中可以存放多个值。Bash Shell 只支持一维数组,初始化时不 需要定义数组大小。在 Shell 中用括号( )来表示数组,数组元素之间用空 格来分隔。定义数组的一般形式如下: Array_name=(ele1 ele2 ele3... eleN)
创建shell脚本
可以在Shell脚本中创建用户自定义变量,用户变量可以存储临时数据 并在整个脚本中使用,类似于程序语言中的变量。变量命名规则如下 :
1.任意字母数字或下划线,长度不超过20个,不能以数字开头; 2.用户变量区分大小写; 3.使用=赋值,变量、=、值之间不能有空格;
创建shell脚本
引用变量的时候一定要在前面加 $,对变量赋值的时候,被赋值的变量不需要 加 $。 有时候用户需存储某个命令的输出信息,可以把命令的输出赋值给变量,赋值 规则有两种: 1.`命令` ,`是反引号,不是引号。 2.$(命令)
例: LS=`ls` echo $LS echo "===================================" LSL=$(ls -l) echo $LSL
$a -ne $b
检测左边的数是否大于右边的,如果是返回 true。 $a -gt $b
检测左边的数是否小于右边的,如果是返回 true。 $a -lt $b
检测左边的数是否大于等于右边的,如果是返回 true。
检测左边的数是否小于等于右边的,如果是返回 true。
$a -ge $b [ $a -le $b ]
Linux计划任务Crontab学习笔记(4):crontab的日志
![Linux计划任务Crontab学习笔记(4):crontab的日志](https://img.taocdn.com/s3/m/26abe7b4f424ccbff121dd36a32d7375a417c697.png)
Linux计划任务Crontab学习笔记(4):crontab的⽇志/var/log/cron ⽂件保存 cron 的任务执⾏记录
复制代码
代码如下:
cd /var/log/
ls -l cron*
会发现每天都会有 cron ⽇志的变化
使⽤
复制代码
代码如下:
tail -f cron
能够查看今天的 cron 的⽇志:
使⽤
复制代码
代码如下:
cat /etc/crontab
可以看到
MAILTO=root 表⽰在执⾏某⼀个 crontab 命令或者任务的时候,都会⽣成⼀个记录信息发送给 root ⽤户
查看 root 的 mail
复制代码
代码如下:
[root@localhost cron]# cd /var/spool/mail
[root@localhost mail]# pwd
/var/spool/mail
[root@localhost mail]# ls
dee emperor mysql root rpc
[root@localhost mail]# tail -100 root
可以看到每⼀个执⾏的命令都会以邮件的⽅式发送给⽤户,
此处能够看到⼀定的 cron 相关的命令。
主要是⽇志还是在 /var/log/cron 下。
Linux信号捕捉、任务计划、系统裁剪、日志系统syslog、系统裁剪之为系统添加ssh服务
![Linux信号捕捉、任务计划、系统裁剪、日志系统syslog、系统裁剪之为系统添加ssh服务](https://img.taocdn.com/s3/m/e69f7e036fdb6f1aff00bed5b9f3f90f76c64def.png)
Linux信号捕捉、任务计划、系统裁剪、⽇志系统syslog、系统裁剪之为系统添加ssh服务cross compile:交叉编译x86, 32bit,ARM交叉编译:如何实现部分编译:1、只编译某⼦⽬录下的相关代码:make dir/make arch/make drivers/net/2、只编译部分模块make M=drivers/net/3、只编译某⼀模块make drivers/net/pcnet32.ko4、将编译完成的结果放置于别的⽬录中make O=/tmp/kernel5、交叉编译make ARCH=脚本编程知识点:1、变量中字符的长度:${#VARNAME}2、变量赋值等:${parameter:-word}:如果parameter为空或未定义,则变量展开为"word";否则,展开为parameter的值;${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,则展开为"word"值;${parameter:=word}:如果parameter为空或未定义,则变量展开为"word",并将展开后的值赋值给parameter;${parameter:?word}:如果parameter为空或未定义,则显⽰为错误,错误信息是后⾯给的"word"值;截取⼦⽚:做字符串切⽚;${parameter:offset}:取字符串,从offset处的后⼀个字符开始,取剩余所有⼦串;${parameter:offset:length}:取⼦串,从offset处的后⼀个字符开始,取lenth长的⼦串;3、脚本配置⽂件/etc/rc.d/init.d/服务脚本服务脚本⽀持配置⽂件:/etc/sysconfig/服务脚本同名的配置⽂件4、局部变量local VAR_NAME=:它只在局部范围内有效,只要变量加上local关键字,它就只在局部范围内有效;a=1test() { a=$[3+4]}for I in `seq $a 10`; do echo $Idone5、命令mktemp创建临时⽂件或⽬录mktemp /tmp/file.XX:为了创建的临时⽂件和别⼈创建的名称不会相同,使⽤file.XX,XX代表随机字符,XX可以有多个;-d: 创建为⽬录这种临时⽂件放到/tmp⽬录下,就算没有删这个⽂件,它们也会定期被清理的,/tmp⽬录⼀般来讲每隔30天会做⼀次清理,30天再也没有被访问过的都会被清理掉;6、信号:进程间通信的⼀种⽅式,⼀个进程向另⼀个进程发送短⼩的信息,能够实现控制另外进程的运作机制;kill -SIGNAL PID:-SIGNAL信号,PID进程号; 1: HUP:让⼀个进程不⽤重启,就可以重读其配置⽂件,并让新的配置信息⽣效; 2: INT:Ctrl+C,中断⼀个进程; 9: KILL:杀死⼀个进程,强制杀死; 15: TERM:终⽌⼀个进程,默认信号;脚本中,能实现信号捕捉,但9和15⽆法捕捉Ctrl+c: SIGINT 中断⼀个进程;trap命令:bash内件命令,可以实现信号捕捉; trap 'COMMAND' 信号列表7、⼀⾏执⾏多个语句,语句间⽤分号分隔(使⽤tarp实现捕捉信号,多个信号列表使⽤分号隔开)[root@Smoke ~]# read -p "Your file:" FILEYour file:提⽰:写⼀个脚本,使⽤read期望⽤户提供⼀个值,如果⽤户没有给,没有输⼊任何信息,直接敲回车了,这时变量从键盘读取⽤户输⼊的数据就为空;[root@Smoke ~]# echo $FILE(显⽰FILE变量中的值)[root@Smoke ~]# stty -F /dev/console size(查看tty终端窗⼝⼤⼩)25 80[root@Smoke ~]# A=3(声明变量A,并赋值为3)[root@Smoke ~]# echo ${A:-30}(如果A变量不空,那就使⽤A⾃⾝的值,否则就使⽤30)3[root@Smoke ~]# unset A(撤销变量A中的赋值)[root@Smoke ~]# echo ${A:-30}(如果A变量不空,那就使⽤A⾃⾝的值,否则就使⽤30)30[root@Smoke ~]# echo $A(显⽰变量A的值)提⽰:变量A的值为空,所以它不会改变变量A⾃⾝的值,但是却把整个表达式展开为后⾯给的字符串;[root@Smoke ~]# A=${A:-30}(如果A不空,把A的值赋予A变量,A等于⾃⾝,如果A的值为空,就把30赋值给A变量)[root@Smoke ~]# echo $A(显⽰变量A的值)30[root@Smoke ~]# unset A(撤销变量A的值)[root@Smoke ~]# echo ${A:-30}(如果A变量不空,就使⽤A⾃⾝的值,否则使⽤30)30[root@Smoke ~]# echo ${A:+30}(如果A变量为空,不做任何操作,如果不空就使⽤30)[root@Smoke ~]# echo ${A:=30}(如果A变量不空,那就使⽤A⾃⾝的值,否则就使⽤30,并且把30赋值给A)30[root@Smoke ~]# echo $A(显⽰A变量的值)30[root@Smoke ~]# ${B:=30}(如果B变量不空,那就使⽤B⾃⾝的值,否则就使⽤30,并且把30赋值给B)-bash: 30: command not found提⽰:不能直接执⾏;[root@Smoke ~]# B=${B:-30}(如果B变量不空,就使⽤B⾃⾝的值,否则使⽤30)[root@Smoke ~]# A='hello world'(定义变量A,并赋值为hello world)如果期望取出来hello world,从第三个开始往后取三个字符;让脚本使⽤配置⽂件:[root@Smoke ~]# vim a.sh(编辑a.sh脚本)#!/bin/bash#[ -n "$TEST" ] && echo $TEST(如果变量TEST的值不空,就显⽰出来)[root@Smoke ~]# chmod +x a.sh(给a.sh脚本执⾏权限)[root@Smoke ~]# ./a.sh(当前⽬录执⾏a.sh脚本)[root@Smoke ~]# vim a.conf(编辑a.conf配置⽂件)TEST='hello world'[root@Smoke ~]# ./a.sh(当前⽬录执⾏a.sh脚本)让脚本获取配置⽂件:[root@Smoke ~]# vim a.sh(编辑a.sh脚本)#!/bin/bash#. /root/a.conf(读取a.conf⽂件内容到当前脚本)[ -n "$TEST" ] && echo $TEST(如果变量TEST的值不空,就显⽰出来)[root@Smoke ~]# ./a.sh(当前⽬录执⾏a.sh脚本)hello world[root@Smoke ~]# vim a.sh(编辑a.sh脚本)#!/bin/bash#. /root/a.conf(读取a.conf⽂件内容到当前脚本)TEST={$TEST:-info}(如果变量TEST没有值,就使⽤info字符串)[ -n "$TEST" ] && echo $TEST[root@Smoke ~]# ./a.sh(当前⽬录执⾏a.sh脚本)hello world[root@Smoke ~]# vim a.conf(编辑a.conf⽂件)TEST=提⽰:TEST变量没有赋值;[root@Smoke ~]# ./a.sh(当前⽬录执⾏a.sh脚本)info[root@Smoke ~]# vim a.conf(编辑a.conf⽂件)TEST='haha'[root@Smoke ~]# ./a.sh(当前⽬录执⾏a.sh脚本)haha[root@Smoke ~]# vim b.sh(编辑b.sh脚本)#!/bin/bash#a=1test() {a=$[3+4]}testfor I in `seq $a 10`; doecho $Idone[root@Smoke ~]# chmod +x b.sh(给b.sh脚本执⾏权限)[root@Smoke ~]# ./b.sh(当前⽬录执⾏b.sh脚本)78910提⽰:test中a变量只和test函数有关系,但是它影响到整个程序,这就是变量的作⽤域,我们在函数中的变量,它也影响到了全局使⽤,变量类型有本地变量、环境变量、位置变量和特殊变量,还有⼀个叫做局部变量,它只在局部范围内有效,只要变量加上local关键字,它就只在局部范围内有效;[root@Smoke ~]# vim b.sh(编辑b.sh脚本)#!/bin/bash#a=1test() {local a=$[3+4] (关键字local代表局部变量,只在函数内有效)}testfor I in `seq $a 10`; doecho $Idone[root@Smoke ~]# ./b.sh(当前⽬录执⾏b.sh脚本)12345678910[root@Smoke ~]# mktemp /tmp/file.XX(创建临时⽂件file.XX,X代表随机字符)/tmp/file.83[root@Smoke ~]# mktemp /tmp/file.XX(创建临时⽂件file.XX,X代表随机字符)/tmp/file.84[root@Smoke ~]# mktemp /tmp/file.XXXXXX(创建临时⽂件file.XXXXXX,X代表随机字符)/tmp/file.f13103[root@Smoke ~]# FILE=`mktemp /tmp/file.XXXXXX`(命令引⽤将mktep /tmp/file.XXXXXX命令执⾏结果保存到FILE变量)[root@Smoke ~]# echo $FILE(显⽰FILE变量的内容)[root@Smoke ~]# mktemp -d /tmp/file.XXXXXX(创建临时⽬录file.XXXXXX,X代表随机字符)/tmp/file.z13141[root@Smoke ~]# ll /tmp/(查看/tmp⽬录⽂件及⼦⽬录详细信息)total 60drwxr-xr-x 12 root root 4096 Dec 4 14:34 busybox-rw------- 1 root root 0 Dec 5 21:35 file.83-rw------- 1 root root 0 Dec 5 21:35 file.84-rw------- 1 root root 0 Dec 5 21:35 file.87-rw------- 1 root root 0 Dec 5 21:37 file.f13103-rw------- 1 root root 0 Dec 5 21:39 file.j13107drwx------ 2 root root 4096 Dec 5 21:41 file.z13141drwx------ 2 root root 4096 Dec 3 08:19 gconfd-rootsrwxr-xr-x 1 root root 0 Dec 3 08:14 mapping-rootsrwxrwxr-x 1 Smoke Smoke 0 Nov 22 01:40 mapping-Smokesrw------- 1 root root 0 Dec 3 08:14 scim-panel-socket:0-rootsrw------- 1 Smoke Smoke 0 Nov 22 01:40 scim-panel-socket:0-Smoke写⼀个脚本,每隔两秒钟显⽰⼀次当前时间:[root@Smoke ~]# vim showdate.sh(编辑showdate.sh脚本)#!/bin/bash#while :;do(死循环,任何条件都循环)datesleep 2done[root@Smoke ~]# chmod +x showdate.sh(给showdate.sh执⾏权限)[root@Smoke ~]# ./showdate.sh(当前⽬录执⾏showdate.sh脚本)Fri Dec 5 22:04:56 CST 2014Fri Dec 5 22:04:58 CST 2014Fri Dec 5 22:05:00 CST 2014Fri Dec 5 22:05:02 CST 2014Fri Dec 5 22:05:04 CST 2014提⽰:脚本会⼀直执⾏,到天荒地⽼,可以使⽤CTRL+C中⽌;[root@Smoke ~]# vim showdate.sh(编辑showdate.sh脚本)#!/bin/bash#trap 'echo "You go..."' INT (捕捉信号,CTRL+C,INT中⽌⼀个进程,如果有⼈发出INT信号,就显⽰You go...)while :;dodatesleep 2done[root@Smoke ~]# ./showdate.sh(当前⽬录执⾏showdate.sh脚本)Fri Dec 5 22:14:16 CST 2014You go...Fri Dec 5 22:14:17 CST 2014You go...Fri Dec 5 22:14:18 CST 2014You go...Fri Dec 5 22:14:19 CST 2014You go...[1]+ Stopped ./showdate.sh提⽰:当执⾏CTRL+C,INT信号中⽌进程,信号被捕捉,⽆法中⽌,可以使⽤CTRL+Z把正在前台的作业送往后台,默认送Stop信号;[root@Smoke ~]# kill -l(查看信号列表)1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT17) SIGCHLD 18) SIGCONT(bg信号,后台执⾏) 19) SIGSTOP(CTRL+Z把正在前台的作业送往后台,默认送Stop信号) 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+439) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+1247) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-1451) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-1055) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-659) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX[root@Smoke ~]# kill %1(终⽌某作业,需要带百分号,⽤于区分作业号还是进程号)[root@Smoke ~]# vim ping.sh(编辑ping.sh脚本)#!/bin/bash#NET=192.168.0for I in {200..254};doif ping -c 1 -W 1 $NET.$I &> /dev/null;thenecho "$NET.$I is up."elseecho "$NET.$I is down."fidone[root@Smoke ~]# chmod +x ping.sh(给ping.sh脚本执⾏权限)[root@Smoke ~]# chmod +x ping.sh[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)192.168.0.200 is down.192.168.0.207 is down.提⽰:通过CTRL+C INT信号⽆法中⽌脚本,因为CTRL+C信号被ping命令捕捉到了,默认被ping命令接收,⽽没有被脚本bash接收,所以CTRL+C只不过当前ping命令不进⾏⽽已,只是当前的ping命令就是处理CTRL+C信号的;让脚本捕捉CTRL+C INT信号:[root@Smoke ~]# vim ping.sh(编辑ping.sh脚本)#!/bin/bash#NET=192.168.0trap 'echo "quit."' INT(捕捉INT信号,显⽰quit)for I in {200..254};doif ping -c 1 -W 1 $NET.$I &> /dev/null;thenecho "$NET.$I is up."elseecho "$NET.$I is down."fidone[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)quit.192.168.0.200 is down.quit.192.168.0.201 is down.quit.192.168.0.202 is down.提⽰:虽然捕捉到了CTRL+C INT信号,但是没有退出,退出脚本exit;#!/bin/bash#NET=192.168.0trap 'echo "quit.";exit 1' INT(捕捉INT信号,并显⽰quit和退出脚本)for I in {200..254};doif ping -c 1 -W 1 $NET.$I &> /dev/null;thenecho "$NET.$I is up."elseecho "$NET.$I is down."fidone[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)192.168.0.200 is down.192.168.0.201 is down.quit.提⽰:捕捉CTRL+C INT信号,退出脚本,并显⽰quit;我们捕捉信号中间执⾏的命令可能会很多,我们不能这么简单的停⽌,⽐如如果⼀个脚本中写了创建临时⽂件,还声明了很多变量,它在没有执⾏结束之前,突然CTRL+C INT信号,这时候这些创建的临时⽂件应该删除,⾄少要把脚本执⾏过程中产⽣的垃圾清理掉,这⾥执⾏的操作就多了,可以通过定义函数来使⽤:[root@Smoke ~]# vim ping.sh(编辑ping.sh脚本)#!/bin/bash#NET=192.168.0clearup() { (定义函数clearup)echo "quit..."exit 1}trap 'clearup' INT (捕捉信号CTRL+C INT,并执⾏clearup函数)for I in {200..254};doif ping -c 1 -W 1 $NET.$I &> /dev/null;thenecho "$NET.$I is up."elseecho "$NET.$I is down."fidone[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)192.168.0.200 is down.quit...提⽰:捕捉CTRL+C INT信号,退出脚本,并显⽰quit;如何清理现场:[root@Smoke ~]# vim ping.sh(编辑ping.sh脚本)#!/bin/bash#NET=192.168.0FILE=`mktemp /tmp/file.XXXXXX`(定义变量FILE,并将mktemp创建临时⽂件结果赋予FILE变量)clearup() {echo "quit..."exit 1}trap 'clearup' INTfor I in {200..254};doif ping -c 1 -W 1 $NET.$I &> /dev/null;thenecho "$NET.$I is up." | tee >> $FILE(tee从标准输⼊读取数据,并且发送⾄标准输出和⽂件,可以实现将⼀个数据即保存到⽂件中⼜能够输出到显⽰器)elseecho "$NET.$I is down."fidone[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)quit...提⽰:捕获CTRL+C INT信号,退出脚本,并显⽰quit,但是临时⽂件不会删除;#!/bin/bash#NET=192.168.0FILE=`mktemp /tmp/file.XXXXXX`clearup() {echo "quit..."rm -f $FILE(删除临时⽂件)exit 1}trap 'clearup' INTfor I in {200..254};doif ping -c 1 -W 1 $NET.$I &> /dev/null;thenecho "$NET.$I is up." | tee >> $FILEelseecho "$NET.$I is down."fidone[root@Smoke ~]# rm -rf /tmp/file.*(删除/tmp⽬录下所有file开头任何长度任意字符结尾的临时⽂件)[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)192.168.0.200 is down.192.168.0.201 is down.192.168.0.202 is down.192.168.0.203 is down.提⽰:让脚本运⾏,同时通过新的tty终端查看/tmp⽬录创建的临时⽂件;[root@Smoke ~]# ls /tmp/busybox file.H14378 gconfd-root mapping-root mapping-Smoke scim-panel-socket:0-root scim-panel-socket:0-Smoke[root@Smoke ~]# tail -f /tmp/file.H14378(查看file.H14378⽂件后10⾏内容,-f查看⽂件尾部,不退出,等待显⽰后续追加⾄此⽂件的新内容)192.168.0.202 is up192.168.0.203 is up192.168.0.204 is up192.168.0.206 is up192.168.0.208 is up[root@Smoke ~]# ./ping.sh(当前⽬录执⾏ping.sh脚本)192.168.0.200 is down.192.168.0.201 is down.192.168.0.202 is down.192.168.0.203 is down.quit...提⽰:这是使⽤CTRL+C INT捕捉信号,退出脚本,并显⽰quit,再查看临时⽂件是否存在;[root@Smoke ~]# ls /tmp/(查看/tmp⽬录⽂件及⼦⽬录)busybox gconfd-root mapping-root mapping-Smoke scim-panel-socket:0-root scim-panel-socket:0-Smoke提⽰:通过CTRL+C信号,临时⽂件被清理掉;任务计划:很多时候我们将系统执⾏的任务写成了脚本,但是并不期望这个脚本⽴即就执⾏,⽽是安排到未来的某个时间运⾏的话,这种机制就叫任务计划(⼀定是未来的时间);1、在未来的某个时间点执⾏⼀次某任务; at -l:查看作业; batch:不需要指定时间,但是也只是执⾏⼀次,特性:在系统⽐较空闲的时候执⾏任务,其他格式和at相同; at 时间(时间点) at> COMMAND(at>提⽰符,COMMAND输⼊期望要执⾏的命令,可以写多个,使⽤回车继续;) at> Ctrl+d(提交任务任务) 指定时间: 绝对时间:HH:MM, DD.MM.YY MM/DD/YY 相对时间:now+#(从现在开始往后3分钟) 单位:minutes, hours, days, weeks 模糊时间:noon(上午12点), midnight(晚上12点), teatime(下午4点,喝茶时间) 命令的执⾏结果:将以邮件的形式发送给安排任务的⽤户可以定义让谁使⽤at或batch创建任务计划:如果at.deny和at.allow⽂件都存在,只允许at.allow中⽤户使⽤at或batch创建任务计划,如果两个都不存在只允许root⽤户使⽤at或batch创建任务计划;/etc/at.deny:⿊名单,拒绝那些⽤户使⽤任务计划/etc/at.allow:⽩名单,允许那些⽤户使⽤任务计划;2、周期性地执⾏某任务; cron:⾃⾝是⼀个不间断运⾏的服务 anacron: cron的补充,能够实现让cron因为各种原因在过去的时间该执⾏⽽未执⾏的任务在恢复正常执⾏⼀次,默认不启动; cron: 系统cron任务: /etc/crontab 分钟⼩时天⽉周⽤户任务 ⽤户cron任务: /var/spool/cron/USERNAME 分钟⼩时天⽉周任务 时间的有效取值: 分钟:0-59 ⼩时:0-23 天:1-31 ⽉:1-12 周:0-7,0和7都表⽰周⽇ 时间通配表⽰: *: 对应时间的所有有效取值 3 * * * *:每个⼩时的第3分钟; 3 * * * 7:每周⽇的每个⼩时的第3分钟; 13 12 6 7 *:每年的7⽉6号13点13分; ,: 离散时间点: 10,40 02 * * 2,5:每周2和周5的2点10分和2点40分; -:连续时间点: 10 02 * * 1-5:每周1到周5的2点10分; /#: 对应取值范围内每多久⼀次,#频率; */3 * * * *:每3分钟执⾏⼀次; 每两⼩时执⾏⼀次: * */2 * * *:每两⼩时的每分钟执⾏⼀次; 08 */2 * * *:每两⼩时执⾏⼀次; 每两天执⾏⼀次: * * */2 * *:每两天的每分钟都执⾏⼀次; 10 04 */2 * *:每两天执⾏⼀次;当指定某个每时间点的时候⽐它⼩的时间点⼀定要加上具体值; cron执⾏结果将以邮件形式发送给管理员: cron的环境变量:cron执⾏所有命令都去PATH环境变量指定的路径下去找,(注意:既然是任务计划,执⾏的时候很可能是没有登录的,所以没有PATH环境变量,所以⽆法找到命令,⼀般在cron当中使⽤的命令都应该写绝对路径) PATH(cron PATH只包含的PATH环境变量路径) /bin:/sbin:/usr/bin:/usr/sbin如果在cron中使⽤脚本(每个命令都要写绝对路径⽐较⿇烦):可以在脚本中定义PATH环境变量,这样脚本就使⽤⾃⾝的环境变量,就不再使⽤其他的环境变量;#!/bin/bashPATH= ⽤户任务的管理: crontab -l: 列出当前⽤户的所有cron任务 -e: 编辑 -r: 移除所有任务,移除cron⽂件; -u USERNAME: 管理其⽤户的cron任务 anacron:anacron如果cron任务不幸略过,可以代替cron在系统启动以后执⾏这个任务,所以它是cron的补充,替代不了cron;rond和anacron服务:service crond status:使⽤cron任务⼀定要确保cron服务是启动的;service anacron status:使⽤anacron任务⼀定要确保anacron服务是启动的,默认是关闭的;[root@Smoke tmp]# man at(查看at命令man帮助⽂档)[root@Smoke tmp]# at now+3(在3后执⾏任务)syntax error. Last token seen: 3Garbled time提⽰:syntax error,语法错误[root@Smoke tmp]# at now+3minutes(在3分钟后执⾏任务,以提交任务开始)at> ls /varat> cat /etc/fstabat> <EOT>(CTRL+D提交任务)job 1 at 2014-12-06 00:10(第1个作业在2014-12-06 00:10)[root@Smoke tmp]# at now+10minutes(在10分钟后执⾏任务,以提交任务开始)at> cat /etc/issueat> <EOT>(CTRL+D提交任务)job 2 at 2014-12-06 00:19(第2各作业在2014-12-06 00:19)[root@Smoke tmp]# at -l(显⽰作业列表)2(第2个作业) 2014-12-06 00:19(执⾏时间) a(队列) root(⽤户)1 2014-12-06 00:10 a root[root@Smoke ~]# at -d 2(删除2号作业)[root@Smoke ~]# at -l(查看作业列表)[root@Smoke ~]# at now+1minutes(在1分钟后执⾏任务,以提交任务开始)at> cat /etcfstabat> <EOT>(CTRL+D提交任务)job 3 at 2014-12-06 01:01[root@Smoke ~]# service sendmail restart(重启sendmail服务)Shutting down sm-client: [ OK ]Shutting down sendmail: [ OK ]Starting sendmail: [ OK ]Starting sm-client: [ OK ][root@Smoke ~]# mail(查看⽤户邮件)Mail version 8.1 6/6/93. Type ? for help."/var/spool/mail/root": 3 messages 1 new 3 unreadU 1 root@ Sat Dec 6 00:10 44/1206 "Output from your job 1"U 2 root@ Sat Dec 6 00:19 18/639 "Output from your job 2"& 1(选择数字读取那个邮件)& q(退出邮件)[root@Smoke ~]# ls /etc/at.deny(查看at或batch⿊名单⽂件)[root@Smoke ~]# vim /etc/crontab(查看系统cron配置⽂件)SHELL=/bin/bash(以那⼀个作为解析命令的解释器)PATH=/sbin:/bin:/usr/sbin:/usr/bin(环境变量)MAILTO=root(邮件发给谁)HOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly(每⼩时执⾏⼀次,以root⽤户⾝份,执⾏run-parts参数/etc/cron.hourly,run-parts是红帽提供的脚本,能够实现运⾏/etc/cron.hourly下的每⼀个脚本或命令)02 4 * * * root run-parts /etc/cron.daily(每天任务)22 4 * * 0 root run-parts /etc/cron.weekly(每周⽇任务)42 4 1 * * root run-parts /etc/cron.monthly(每⽉任务)[root@Smoke ~]# ls /etc/cron.daily/(查看没天任务的⽂件夹)[root@Smoke cron]# vim root(编辑root⽤户cron)提⽰:⽤户cron需要在/var/spool/cron/⽬录下定义和⽤户同名的⽂件,不会检查语法;[root@Smoke ~]# crontab -l(列出当前⽤户cron任务)no crontab for root[root@Smoke ~]# crontab -e(定义当前⽤户cron任务)*/3 * * * * /bin/echo "how are ya?"(每3分钟执⾏⼀次)crontab: installing new crontab(安排新的cron任务)[root@Smoke ~]# crontab -e*/3 * * * * /bin/echo "how are ya?"*/5 * * * /bin/echo "how are ya?"(少些⼀段时间表⽰)crontab: installing new crontab"/tmp/crontab.XXXXzS1tQE":2: bad day-of-weekerrors in crontab file, can't install.(错误的cron⽂件,不能安排)Do you want to retry the same edit? y(需要重新编辑吗,y编辑)*/3 * * * * /bin/echo "how are ya?"*/5 * * * * /bin/echo "how are ya?"提⽰:crontab -e可以检查语法错误,如果收到在/var/spool/cron⽬录编辑⽤户cron不会检查语法;[root@Smoke ~]# ls /var/spool/cron/(查看⽤户cron⽂件)root[root@Smoke ~]# crontab -r(移除所以cron任务,会删除cron⽂件)[root@Smoke ~]# ls /var/spool/cron/(查看⽤户cron⽂件)[root@Smoke ~]# id hadoop(查看hadoop⽤户信息)uid=501(hadoop) gid=501(hadoop) groups=501(hadoop) context=root:system_r:unconfined_t:SystemLow-SystemHigh[root@Smoke ~]# crontab -u hadoop -e(给hadoop⽤户编辑cron任务)*/3 * * * * /bin/echo "How are ya!"(每3分钟执⾏⼀次)[root@Smoke ~]# ls /var/spool/cron/(查看⽤户cron任务⽂件)hadoop[root@Smoke ~]# su - hadoop(切换到hadoop⽤户)[hadoop@Smoke ~]$ crontab -l(列出当前⽤户cron任务)*/3 * * * * /bin/echo "How are ya!"[root@Smoke ~]# cat /etc/anacrontab(查看anacrontab⽂件)# /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.SHELL=/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root1(过去已经有1天没执⾏,每天任务,每分钟任务,⼩于1天的任务,在过去应该执⾏⼀次的,但它⼀天没有执⾏了) 65(如果有⼩于1天的任务,在⼀天没有执⾏,在开机以后的第65分钟执⾏) cron.daily run-parts /etc/cron.daily7(已经有7天没执⾏) 70(开机以后第70分钟) cron.weekly run-parts /etc/cron.weekly30(已经有1个⽉没执⾏) 75(开机以后第75分钟) cron.monthly run-parts /etc/cron.monthly提⽰:anacrontab⽂件语法格式,这个⽂件⼀共有4个段,前两个段是指时间的,第三个段是注释信息,第四个段是要执⾏的任务,anacrontab最⼩操作单位是天,cron是分钟,但是anacrontab最多只能监控到天,过去⼀天已经没有执⾏了,如果是过去5分钟是管不了的,只能监控到每天、每周、每⽉;[root@Smoke ~]# service crond status(查看crond服务状态)crond (pid 3603) is running...提⽰:cron⼀定要确保crond服务启动,只有crond服务运⾏,cron任务才能运⾏;[root@Smoke ~]# service anacron status(查看anacron服务状态)anacron is stopped提⽰:anacron⼀定要确保anacron服务是启动的,默认是关闭的;[root@Smoke ~]# chkconfig --list crond(查看crond服务在不同级别下运⾏情况)crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off提⽰:crond服务也是chkconfig控制的;问题:配置本机每隔两台在凌成3点20备份⼀次/etc⽬录,备份⽂件存放⾄/backup/etc⽬录,⽂件形如:etc-2012-06-20.tar.bz2;Linux内核及编译Linux系统安装和kickstart故障排除Kernel + initrd(busybox制作,提供ext3⽂件系统模块) + ROOTFS (busybox制作)make arch/:只编译对应⽬录下的所有内容; arch/x86/boot/bzImage:编译后x86内核⽬录,bzImage是使⽤bz⽅式压缩之后的内核映像⽂件; 硬件驱动:initrd initrd: 仅需要提供内核访问真正的根⽂件系统所在设备需要的驱动 存储设备和⽂件系统相关的模块 系统初始化rc.sysinit: 初始其它硬件的驱动程序; ROOTFS: busybox, init不⽀持运⾏级别(如果要使⽤运⾏级别可以移植,还需要更改/etc/inittab⽂件格式) /etc/inittab: 格式也不尽相同内核编译: make SUBDIR=arch/ make arch/x86//boot/vmlinuz (ext3, IDE):系统⾃⼰的内核不带ext3模块,但是默认⽀持IDE的硬盘驱动,因此不再需要提供硬件设备驱动,只需要提供⽂件系统;/mnt/boot: /dev/hda1/mnt/sysroot: /dev/hda2制作完整的⼩Linux系统:[root@Smoke ~]# ls(查看当前⽬录⽂件及⼦⽬录)linux-2.6.38.5.tar.bz2提⽰:下载linux内核为linux-2.6.38.5.tar.bz2,将内核⽂件解压到/usr/src⽬录;[root@Smoke ~]# tar xf linux-2.6.38.5.tar.bz2 -C /usr/src/(解压linux-2.6.38.5.tar.bz2,-C更改解压⽬录为/usr/src)[root@Smoke ~]# cd /usr/src/(切换到/usr/src)[root@Smoke src]# ls(查看当前⽬录⽂件及⼦⽬录)debug kernels linux-2.6.38.5 redhat[root@Smoke src]# ln -sv linux-2.6.38.5/ linux(给linux-2.6.38.5创建软连接linux,并显⽰创建过程)create symbolic link `linux' to `linux-2.6.38.5/'[root@Smoke src]# cd linux(切换到linux⽬录)[root@Smoke linux]# ls(查看当前⽬录⽂件及⼦⽬录)arch COPYING crypto drivers fs init Kbuild kernel MAINTAINERS mm README samples security tools virtblock CREDITS Documentation firmware include ipc Kconfig lib Makefile net REPORTING-BUGS scripts sound usr[root@Smoke linux]# ls -a(查看当前⽬录所有⽂件及⼦⽬录). block crypto firmware include Kbuild lib Makefile README scripts tools.. COPYING Documentation fs init Kconfig .mailmap mm REPORTING-BUGS security usrarch CREDITS drivers .gitignore ipc kernel MAINTAINERS net samples sound virt提⽰:要配置内核,要提供.config⽂件,但是要完全从头配置⽐较困难,以前是直接复制当前系统的.config⽂件,但是当前系统的.config⽂件并不适合我们制作微型⼩Linux使⽤;[root@Smoke linux]# lftp 172.160.1(连接ftp服务器)lftp 172.160.1:~> cd pub/Sources/kernel(切换到pub/Sources/kernel⽬录)lftp 172.160.1:/pub/Sources/kernel~> get kernel-2.6.38.1-i686.cfg(下载.configure配置⽂件)71568 bytes transferredlftp 172.160.1:/pub/Sources/kernel~> bye(退出0[root@Smoke linux]# ls(查看当前⽬录⽂件及⼦⽬录)arch CREDITS drivers include Kbuild kernel-2.6.38.5-i686.cfg Makefile README scripts toolsblock crypto firmware init Kconfig lib mm REPORTING-BUGS security usrCOPYING Documentation fs ipc kernel MAINTAINERS net samples sound virt提⽰:下载的kernel-2.6.38.5-i686.cfg⽂件;[root@Smoke linux]# mv kernel-2.6.38.5-i686.cfg .config(重命名kernel-2.6.38.5-i686.cfg为.config)提⽰:以.config⽂件作为蓝本来进⾏修改;[root@Smoke linux]# make menuconfig(配置内核)提⽰:⼀定要在内核⽬录下;打开内核编译字符图形界⾯,需要将终端窗⼝放⼤不然会报错,提⽰窗⼝⾄少要能容纳19⾏,容纳80列;提⽰:选择General setup --->选项,进⼊⼦菜单;提⽰:选择Local version - append to kernel release(更改内核版本号),点击回车,更改版本为-1.mlinux,点击OK;提⽰:选择Cross-compiler tool prefix(交叉编译)提⽰:双击ESC返回主菜单,选择Device Drivers --->(设备驱动),点击回车;提⽰:选择SCSI device support --->(⽀持SCSI设备),点击回车,选择SCSI tape support(SCSI磁带⽀持)通过空格键关闭;提⽰:通过双击ESC键返回上级菜单,选择Serial ATA and parallel ATA drivers --->(串⾏ATA和并⾏ATA设备),都要能够⽀持;提⽰:通过双击ESC键返回上级菜单,要在VMware使⽤SCSI需要编译Fusion MPT device support --->(融合MPT设备⽀持),SCSI Transports --->(SCSI传输)需要⽀持,SCSI low-level drivers --->(SCSI低级别设备)需要⽀持;提⽰:SCSI Transports --->(SCSI传输)需要⽀持,SCSI low-level drivers --->(SCSI低级别设备)需要⽀持,选择SCSI device support --->(SCSI设备⽀持)点击回车;提⽰:我们这⾥内核提供的样本是不⽀持SCSI设备的,所以不进⾏更改,双击ESC返回到主菜单,选择Device Drivers ---(设备驱动),选择Network device support --->(⽹络设备⽀持),点击回车;提⽰:关闭Eternet (1000 Mbit) --->(千兆⽹卡)、关闭Eternet (10000 Mbit) --->(万兆⽹卡)、关闭Wireless LAN --->(⽆线⽹卡)、关闭PCMCIA network device support --->;提⽰:将ext2⽂件系统⽀持通过空格选择做进内核、将ext3⽂件系统⽀持通过空格选择做进内核、将ext4通过空格关闭⽀持,Reiserfssupport(reiserfs⽂件系统⽀持)在我们⽂件系统⽤不着通过空格关闭、JFS filesystem support(JFS⽂件系统⽀持)通过空格关闭,XFS filesystem support(XFS⽂件系统⽀持)通过空格关闭,这样把ext3⽂件系统直接做进内核,这样就不需要在initrd中给它提供模块了,否则就必须要⼿动给它提供模块;提⽰:双击ESC返回上级菜单,找到Network device support --->(⽹络设备⽀持),点击回车;提⽰:选择Eternet (10 or 100Mbit) --->点击回车,关闭3COM cards、将AMD PCnet32 PCI support(AMD PCnet32 PCI⽀持)做进模块,关闭Micrel KSZ8841/2 PCI、关闭Broadcom 440x/47xx ethernet support(蓝⽛⽀持)、关闭nForce Ethernet support、关闭CS89x0 support、关闭Inter(R) PRO/100+ support、关闭Mylex EISA LNE390A/B support (EXPERIMENTAL)、关闭Myson MTD-8xx PCI Ethernet supoort、关闭National Semiconductor DP8381x series PCI Ethernet supoort、关闭PCI NE2000 and clones support (see help)、关闭RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERMENTAL)、关闭RealTek RTL-8129/8130/8139 PCI fast Ethernet Adapter support、关闭RDCR6040 Fast Ethernet Adapter support、关闭Sis 900/7016 PCI Fast Ethernet Adapter support、关闭SMC Etherpower II、关闭SMSC LAN9420 PCI ethernet adapter support、关闭Sundance Alta supoort、关闭TI ThunderLAN support、关闭Micrel KS8851 MLL、关闭VIA Rhine support;提⽰:双击ESC返回到主菜单,保存退出,选择Yes;[root@Smoke linux]# cp .config /root/config-2.6.38.5-i686.cfg(赋值.config⽂件到/root⽬录叫config-2.6.38.5-i686.cfg)[root@Smoke linux]# make drivers/net/pcnet32.ko(编译⽹卡模块pcnet32.ko)提⽰:将pcnet32.c写成pcnet32.ko进⾏编译;[root@Smoke linux]# modinfo drivers/net/pcnet32.ko(查看pcnet32.ko模块信息)filename: drivers/net/pcnet32.kolicense: GPLdescription: Driver for PCnet32 and PCnetPCI based ethercardsauthor: Thomas Bogendoerferalias: pci:v00001023d00002000sv*sd*bc02sc00i*alias: pci:v00001022d00002000sv*sd*bc*sc*i*alias: pci:v00001022d00002001sv*sd*bc*sc*i*depends:vermagic: 2.6.38.5-1.mlinux SMP preempt mod_unload 686parm: debug:pcnet32 debug level (int)parm: max_interrupt_work:pcnet32 maximum events handled per interrupt (int)parm: rx_copybreak:pcnet32 copy breakpoint for copy-only-tiny-frames (int)parm: tx_start_pt:pcnet32 transmit start point (0-3) (int)parm: pcnet32vlb:pcnet32 Vesa local bus (VLB) support (0/1) (int)parm: options:pcnet32 initial option setting(s) (0-15) (array of int)parm: full_duplex:pcnet32 full duplex setting(s) (1) (array of int)parm: homepna:pcnet32 mode for 79C978 cards (1 for HomePNA, 0 for Ethernet, default Ethernet (array of int)提⽰:查看依赖那些模块,⾃⼰编译的pcnet32.ko模块不再依赖mii.ko模块;[root@Smoke linux]# make drivers/net/(编译drivers/net/⽬录下所有模块)提⽰:编译drivers/net/⽬录下所有已经选择的⽹卡都会被编译;[root@Smoke linux]# make arch/(编译对应⼦⽬录下的内容)提⽰:只编译核⼼make arch/,或者make arch/x86/编译x86平台核⼼,不指定它会根据当前系统操作系统平台版本进⾏选择,所以我们执⾏make arch/就可以了,为了让这个过程不会端⼝可以打开screen;[root@Smoke linux]# screen(打开screen)提⽰:在编译内核时候最好不要使⽤远程连接,万⼀远程连接断开了,内核编译过程也就中断了,你要再重新执⾏⼜要重头开始,可以使⽤screen⼯具,能够在当前远程窗⼝中模拟好⼏个窗⼝;[root@Smoke linux]# make arch/x86/(编译x86平台核⼼)先使⽤操作系统提供的内核,等新内核编译好了再切换到新内核:(/boot/vmlinuz (ext3, IDE):系统⾃⼰的内核不带ext3模块,但是默认⽀持IDE的硬盘驱动,因此不再需要提供硬件设备驱动,只需要提供⽂件系统;)提供boot⽬录和sysroot⽬录:在现有linux虚拟机增加⼀块20G的IDE硬盘,为系统上的新硬盘建⽴分区,这⾥根据需要先建⽴⼀个⼤⼩为100M的主分区作为新建系统的boot分区和⼀个512M的分区作为⽬标系统(即正在构建的新系统,后⾯将沿⽤此名称)的根分区;100M的分区格式化后将其挂载⾄/mnt/boot⽬录下;512M的分区格式化后将挂载⾄/mnt/sysroot⽬录;[root@localhost ~]# fdisk -l(查看系统上磁盘及分区情况)Disk /dev/hda: 21.4 GB, 21474836480 bytes15 heads, 63 sectors/track, 44384 cylindersUnits = cylinders of 945 * 512 = 483840 bytesDisk /dev/hda doesn't contain a valid partition tableDisk /dev/sda: 53.6 GB, 53687091200 bytes255 heads, 63 sectors/track, 6527 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/sda1 * 1 13 104391 83 Linux/dev/sda2 14 2624 20972857+ 83 Linux/dev/sda3 2625 2755 1052257+ 82 Linux swap / Solaris[root@localhost ~]# fdisk /dev/hda(管理磁盘分区,进⼊交互式模式)The number of cylinders for this disk is set to 44384.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Command (m for help): n(创建分区)Command actione extendedp primary partition (1-4)p(主分区)Partition number (1-4): 1(分区号)First cylinder (1-44384, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-44384, default 44384): +100M(创建100M分区)Command (m for help): n(创建分区)Command actione extendedp primary partition (1-4)p(驻俄分区)Partition number (1-4): 2(分区号)First cylinder (209-44384, default 209):Using default value 209Last cylinder or +size or +sizeM or +sizeK (209-44384, default 44384): +512M(创建512M分区)Command (m for help): w(保存退出)The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@localhost ~]# partprobe /dev/hda(让内核重新扫描分区表)[root@localhost ~]# fdisk -l /dev/hda(查看/dev/hda分区情况)Disk /dev/hda: 21.4 GB, 21474836480 bytes15 heads, 63 sectors/track, 44384 cylindersUnits = cylinders of 945 * 512 = 483840 bytesDevice Boot Start End Blocks Id System/dev/hda1 1 208 98248+ 83 Linux/dev/hda2 209 1267 500377+ 83 Linux[root@localhost ~]# mke2fs -j /dev/hda1(将/dev/hda1创建为带⽇志的⽂件系统,即ext3⽂件系统)mke2fs 1.39 (29-May-2006)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)24576 inodes, 98248 blocks4912 blocks (5.00%) reserved for the super userFirst data block=1Maximum filesystem blocks=6737100812 block groups8192 blocks per group, 8192 fragments per group2048 inodes per groupSuperblock backups stored on blocks:8193, 24577, 40961, 57345, 73729Writing inode tables: doneCreating journal (4096 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 20 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.[root@localhost ~]# mke2fs -j /dev/hda2(将/dev/hda2创建为带⽇志的⽂件系统,即ext3⽂件系统)mke2fs 1.39 (29-May-2006)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)125488 inodes, 500376 blocks25018 blocks (5.00%) reserved for the super userFirst data block=1Maximum filesystem blocks=6763315262 block groups8192 blocks per group, 8192 fragments per group2024 inodes per groupSuperblock backups stored on blocks:8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409Writing inode tables: doneCreating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 35 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.[root@localhost ~]# mkdir /mnt/{boot,sysroot}(创建/mnt/boot⽬录和/mnt/sysroot⽬录,花括号{}展开) [root@localhost ~]# mount /dev/hda1 /mnt/boot/(将/dev/hda1挂载到/mnt/boot/⽬录)[root@localhost ~]# mount /dev/hda2 /mnt/sysroot/(将/dev/hda2挂载到/mnt/boot/⽬录)[root@localhost ~]# mount(查看系统所有挂载的⽂件系统)/dev/sda2 on / type ext3 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)/dev/sda1 on /boot type ext3 (rw)tmpfs on /dev/shm type tmpfs (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)/dev/hda1 on /mnt/boot type ext3 (rw)/dev/hda2 on /mnt/sysroot type ext3 (rw)安装GRUB:[root@Smoke ~]# grub-install --root-directory=/mnt /dev/hda(安装GRUB,根⽬录/mnt,设备/dev/hda)Probing devices to guess BIOS drives. This may take a long time.Installation finished. No error reported.This is the contents of the device map /mnt/boot/grub/device.map.Check if this is correct or not. If any of the lines is incorrect,fix it and re-run the script `grub-install'.(fd0) /dev/fd0(hd0) /dev/hda(hd1) /dev/sda[root@Smoke ~]# ls /mnt/boot/(查看安装的grub)。
服务器定时执行计划任务,定时访问页面(windowslinux)
![服务器定时执行计划任务,定时访问页面(windowslinux)](https://img.taocdn.com/s3/m/07f2e29a85868762caaedd3383c4bb4cf7ecb7cf.png)
服务器定时执⾏计划任务,定时访问页⾯(windowslinux)经过选的⼀种⼜简单⼀句话就解决了问题explorer "https://?opt=make"将上⾯的代码保存为dositemap.bat即可。
然后添加到计划任务⼀、windows计划任务1、写⼀个PHP程序,命名为test.php,内容如下所⽰:<?$fp = fopen("test.txt", "a+");fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!\n");fclose($fp);>程序⼤胆地写,什么include\require尽管⽤,都没问题2、新建Bat⽂件,命名为test.bat,内容如下所⽰:D:\php\php.exe -q D:\website\test.php⾃⼰写的bat⽂件,定时打开页⾯,并关闭ie浏览器explorer.exe open=https://Ping -n 80 127.1>nulTaskkill /f /im "iexplore.exe"3、建⽴WINDOWS计划任务:开始–>控制⾯板–>任务计划–>添加任务计划浏览⽂件夹选择上⾯的bat⽂件设置时间和密码(登陆WINDOWS的)保存即可了。
4、over! 可以右键计划任务点“运⾏”试试⼆、Linux 的脚本实现⼀、在Crontab中使⽤PHP执⾏脚本就像在Crontab中调⽤普通的shell脚本⼀样(具体Crontab⽤法),使⽤PHP程序来调⽤PHP脚本。
每⼀⼩时执⾏myscript.php如下:**# crontab -e**00 * * * * /usr/local/bin/php /home/john/myscript.php/usr/local/bin/php为PHP程序的路径。
系统计划任务
![系统计划任务](https://img.taocdn.com/s3/m/480fd5a5846a561252d380eb6294dd88d0d23d25.png)
系统计划任务在计算机系统中,计划任务是一种非常重要的功能,它可以让计算机在特定的时间点或者特定的条件下执行一些指定的任务,这对于提高计算机的工作效率和自动化程度是非常有帮助的。
在本文中,我们将讨论系统计划任务的相关内容,包括其作用、设置方法以及注意事项。
首先,让我们来看一下系统计划任务的作用。
系统计划任务可以帮助我们在不需要人工干预的情况下,让计算机自动执行一些重复性的、定时的或者特定条件下的任务。
比如,我们可以设置系统在每天凌晨自动进行磁盘清理,或者在特定的日期自动备份重要文件。
这些任务如果需要人工来执行的话,就会非常耗时耗力,而通过系统计划任务,我们可以很方便地实现这些功能。
其次,我们需要了解如何设置系统计划任务。
在Windows系统中,我们可以通过“任务计划程序”来进行设置。
首先,我们打开“任务计划程序”,然后在其中新建一个基本任务,接着我们可以按照向导的指示逐步设置任务的名称、触发器、操作和条件等信息。
在Linux系统中,我们可以通过crontab命令来设置计划任务。
通过简单的命令行操作,我们就可以实现对系统计划任务的设置。
无论是Windows系统还是Linux系统,都提供了非常方便的设置方式来满足我们的需求。
最后,我们需要注意一些关于系统计划任务的注意事项。
首先,我们需要注意任务的触发条件和执行时间,以免影响到系统的正常运行。
其次,我们需要确保任务的执行结果能够被记录和监控,以便及时发现和解决问题。
另外,我们还需要定期检查和维护系统计划任务,以确保其正常运行和高效执行。
综上所述,系统计划任务在计算机系统中扮演着非常重要的角色。
通过合理设置和管理系统计划任务,我们可以提高计算机系统的工作效率,减轻人工负担,实现自动化操作。
因此,我们需要深入了解系统计划任务的相关知识,并合理利用其功能,以便更好地提升计算机系统的整体性能和工作效率。
linux 任务计划
![linux 任务计划](https://img.taocdn.com/s3/m/911c462cdcccda38376baf1ffc4ffe473368fddd.png)
linux 任务计划Linux 任务计划。
在Linux系统中,任务计划是一项非常重要的功能,它可以帮助用户自动执行一些重复性的工作,提高工作效率。
本文将介绍Linux系统中任务计划的基本概念、使用方法以及一些常见的任务计划工具。
1. 任务计划的基本概念。
任务计划是指在指定的时间或条件下,自动执行某项任务的功能。
在Linux系统中,任务计划通常通过cron来实现。
cron是一个在Unix类操作系统中用来定期执行程序的工具。
它可以在系统启动时就启动,然后在后台运行,每分钟检查一次是否有要执行的任务。
如果有,则执行该任务。
2. 任务计划的使用方法。
在Linux系统中,用户可以通过crontab命令来管理任务计划。
crontab命令用于创建、修改和删除用户的定时任务。
用户可以通过crontab命令来编辑自己的crontab文件,以实现定时执行某项任务的功能。
例如,要创建一个每天凌晨3点执行的任务,可以使用以下命令:```shell。
crontab -e。
```。
然后在打开的编辑器中添加以下内容:```shell。
0 3 /path/to/your/command。
```。
这个命令的含义是,在每天的凌晨3点,执行指定的命令。
其中,0表示分钟,3表示小时,表示每天,表示每月,表示每周,/path/to/your/command表示要执行的命令的路径。
3. 常见的任务计划工具。
除了cron之外,Linux系统中还有一些其他的任务计划工具,例如at和anacron。
at是一个用来执行一次性任务的工具。
用户可以使用at命令来指定一个时间,然后在该时间执行指定的命令。
例如,要在10分钟后执行某个命令,可以使用以下命令:```shell。
at now + 10 minutes。
```。
然后在打开的编辑器中输入要执行的命令,保存并退出即可。
anacron是一个用来执行周期性任务的工具。
它可以在系统启动时检查上一次任务执行的时间,然后根据设定的周期执行相应的任务。
LINUX学习计划和目标
![LINUX学习计划和目标](https://img.taocdn.com/s3/m/346cf54a0640be1e650e52ea551810a6f524c8e7.png)
LINUX学习计划和目标LINUX操作系统已经成为IT行业中非常重要的一个技术领域。
它是一个强大的开源系统,被广泛应用于服务器、网络设备、嵌入式系统等领域。
学习和掌握LINUX操作系统对于从事互联网相关的行业非常重要,因此很多人都希望能够系统地学习LINUX操作系统。
在这篇文章中,我们将介绍一份LINUX学习计划和目标,希望能够帮助大家更好地了解LINUX操作系统,并制定一个系统的学习计划。
LINUX学习计划LINUX学习计划应该从基础知识开始学习,逐步深入,建立一个系统的知识结构。
一份合理的LINUX学习计划应该包括以下几个主要的学习阶段:1. 学习LINUX基础知识:包括LINUX操作系统的概念、安装、配置、文件系统、用户管理、权限管理等基本知识。
2. 学习LINUX系统管理:包括LINUX系统的运维管理、服务管理、网络管理、安全管理等知识。
3. 学习LINUX编程:包括shell编程、Python编程等知识。
4. 学习LINUX系统优化:包括系统性能优化、安全加固等知识。
5. 学习LINUX高级应用:包括LINUX集群、虚拟化、容器等高级应用知识。
根据以上几个学习阶段,可以制定一份详细的学习计划。
具体的学习计划可以按照具体的个人情况进行安排,一般来说,初学者可以按照以下的学习路径进行学习:1. 学习LINUX基础知识:首先,我们需要学习LINUX的基础知识。
可以选择一本LINUX的入门书籍,深入了解LINUX操作系统的基本概念、安装、配置等知识。
2. 学习LINUX系统管理:在掌握LINUX的基础知识之后,我们需要学习LINUX系统的管理知识。
可以选择一些系统管理的教程或视频,学习LINUX系统的运维管理、服务管理、网络管理、安全管理等知识。
3. 学习LINUX编程:了解LINUX系统管理的基础之后,我们可以学习一些LINUX编程知识,比如shell编程、Python编程等知识。
这些知识可以帮助我们更好地进行系统管理工作。
Linux下的计划任务
![Linux下的计划任务](https://img.taocdn.com/s3/m/079a10cd5fbfc77da269b17a.png)
两 个 使 用控 制 文件 的格 式都 是 每 行 一 个 用 户 。 需 要 注 意
的功能 。
如 果 想 开 机 就 自动 运 行 此
的 是 , 这 两 个 文 件 都 不 允 许
服 务 ,那 么 可 以 将 其 加 入 到 启 有 空 格 。 如 果 使 用 控 ,记 录 在 其 中 的账 号 将 无 务 的详 细 内容 ; 法 使 用 c o t b。 就 优 先 级 而 r na ◆ - 删 除 每 个 用 户 的 co r rn
◆ 日期 ( - 1 l 13 )
言 ,/ t /r na lw优 先 于 / t/ 服 务 l e cc o . l o ec
令 来 设 定 co 。 rna  ̄ 令 的 r n co tb
的 , 前 面 的 5个 +代 表 着 5个 数 字 ,数 字 的 取 值 范 围 和 含 义
如下 :
co tb的 账 号 写 入 其 中 ,若 不 具 体 参 数 如 下 : rna 再 这 个 文件 内 的账 号 将 不 能 使 ◆ 一 u设 定 某 个 用 户 的 co rn
为 服 务 器 的管 理 员 ,每 天 会重 复 做 许 多 同 样 的 工 作 ,例 如 备 份 日志 、 数 据 库 和 重 启 服 务
1启 动 c o . rn服 务
c on是 L n x中 内 置 的 服 r iu
机 器 不 是 所 有 的 使 用 者 都 可 以 使 用 c on 安 排 定 时 任 务 , r
等 。 有 什 么 方 法 来 简 化 这 些 令 务 , 但 有 的 发 行 版 并 不 是 自动 用 户 可 以 利 用 / t / r . — e c c on aI
Linux终端中的计划任务管理命令
![Linux终端中的计划任务管理命令](https://img.taocdn.com/s3/m/aa081c0b66ec102de2bd960590c69ec3d5bbdbc3.png)
Linux终端中的计划任务管理命令Linux操作系统提供了许多强大的功能和工具,其中计划任务管理是一个非常重要的功能,可以帮助我们自动执行一些重复性的任务。
在Linux终端中,我们可以使用一些命令来管理计划任务,本文将对一些常用的计划任务管理命令进行介绍。
1. crontab命令crontab命令用于管理当前用户的定时任务列表。
通过crontab命令,我们可以创建、编辑、查看和删除定时任务。
1.1 创建定时任务要创建一个新的定时任务,可以使用以下命令:```shellcrontab -e```该命令会打开一个文本编辑器,可以在其中编写定时任务的配置。
每一行代表一个定时任务,格式如下:```plaintext* * * * * command```其中,五个星号分别表示分钟、小时、天、月、星期几。
command表示要执行的命令。
例如,要每天的8点执行一个脚本,可以添加以下行:```plaintext0 8 * * * /path/to/script.sh```1.2 编辑定时任务要编辑已存在的定时任务,可以使用以下命令:```shellcrontab -e```执行该命令后,会打开定时任务的配置文件,可以修改其中的内容。
修改保存后即可生效。
1.3 查看定时任务要查看当前用户的定时任务列表,可以使用以下命令:```shellcrontab -l```该命令会列出当前用户的所有定时任务。
1.4 删除定时任务要删除当前用户的某个定时任务,可以使用以下命令:```shellcrontab -r```执行该命令后,该定时任务将被从定时任务列表中删除。
2. at命令在Linux终端中,at命令用于执行一次性的定时任务。
与crontab命令不同,at命令只执行一次,而不是按照固定的时间间隔执行。
2.1 创建at任务要创建一个新的at任务,可以使用以下命令:```shellat time```其中,time表示任务的执行时间。
linux,计划任务,每小时执行一次(共7篇)
![linux,计划任务,每小时执行一次(共7篇)](https://img.taocdn.com/s3/m/93e1e6d5d4bbfd0a79563c1ec5da50e2524dd16c.png)
linux,计划任务,每小时执行一次(共7篇) :每小时执行计划l inux l inux计划任务不执行linux 计划任务crontab linux脚本定时执行篇一:Linux 计划任务命令小结Linux 下的计划任务命令小结在UNIX下怎样实现和Windows下“计划任务”一样的功能$crontab -e 编辑脚本$crontab -l 察看脚本用$crontab -e 编辑脚本,加入下列行:分小时星期月命令Linux下crontab命令的用法任务调度的crond常驻命令crond 是linux用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
而linux任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置3、Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:文件含义/etc/cron.deny 该文件中所列的用户不允许使用Crontab命令 /etc/cron.allow 该文件中所列的用户允许使用Crontab命令/var/spool/cron/ 是所有用户的crontab文件/var/spool/cron/crontabs4、Crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:参数名称含义示例-l 显示用户的Crontab文件的内容crontab –l-i 删除用户的Crontab文件前给提示crontabl -ri-r从Crontab目录中删除用户的Crontab文件crontabl -r-e编辑用户的Crontab文件crontabl -e5、用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。
Linux操作系统的基础知识大全
![Linux操作系统的基础知识大全](https://img.taocdn.com/s3/m/58c9f64cac02de80d4d8d15abe23482fb4da02ce.png)
Linux操作系统的基础知识大全对于初学Linux的新手来说,掌握基础知识尤为重要。
下面由店铺整理了Linux操作系统的基础知识大全的相关知识,希望对你有帮助。
Linux操作系统基础知识大全:计算机概述1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机.2.计算机五大单元:I/O单元内存单元 cpu内部控制单元 cpu内部算术逻辑单元3.cpu中含有指令集->RISC,精简指令集,指令执行时间短性能好->arm系列等.->CISC,复杂指令集,指令处理任务内容丰富->x86系列等.4.主板将所有的设备连接在一起,重要的组件是芯片组->Intel系列cpu主板芯片组->俩个桥接器控制各组件的通信->北桥负责连接速度较快的cpu,内存与显卡等组件. –>南桥负责连接速度较慢的外设。
5.AMD系列cpu为了加速cpu与内存的通信,将内存的控制组件集成在cpu中.这与Intel不同。
6.主板的各组件cpu 内存磁盘设备(IDE/SATA) 总线芯片组显卡接口(PCI-Express) 适配卡7.cpu的外频指的是cpu与外部组件进行数据传输或运算时的速度,倍频则是cpu内部用来加速工作性能的一个倍数,俩者相乘才是cpu的频率8.cpu超频指的是将cpu的外频或倍频通过主板的设定功能更改成更高的频率,倍频出厂时就设置好了,所以通常改的是cpu的外频.9.北桥的总线称为系统总线,是内存的传输主要信道所以速度快.南桥的总线则是I/O总线,用于联系外设.10.北桥所支持的频率我们称为前端总线速度(FSB),每次传送的位数则是总线宽度,每秒可传送的最大数据量->FSB*总线宽度。
11.cpu每次能够处理的数据量称为字组大小,计算机的32/64位设置便是由cpu解析的字组大小而来.12.pc内存的主要组件为动态随机访问内存(Dynamic Random Access Memory),断电数据消失->SDRAM同步动态随机访问内存->DDR SDRAM(double data rate)13.SRAM(Static random accdss memory)静态随机访问内存可集成在cpu内部的作为高速缓存(L2 cache).14.BIOS(basic input output system)是一套开机读取的程序写在主板的ROM中,现在随着计算机的发展,BIOS需要更新所以现在BIOS写在flash memory或eeprom中.15.主板上的各组件参数写在一个cmos芯片中,通过BIOS读取和更新数据.16.显卡(vga graphics array),北桥连接,随着组件的升级,数据传送的频宽原来越大目前的规格是PCI-Express.17.硬盘由许多的盘片,机械手臂,磁头,主轴马达所组成,数据写在磁性盘片上,读写通过机械手臂上的磁头(head)来完成,主轴马达让盘片转动,机械手臂伸展让磁头在盘面上进行读写操作.18.盘面上有多个同心圆绘制的图形,而从圆心以放射状的方式分割出的最小的存储单位就是扇区,每个扇区大小为512bytes,扇区组成的圆就是一个磁道,多盘片上,所有盘面上的磁道可以组成一个柱面,柱面是分割磁盘的最小单位.head*cylinder*sector*512bytes19.硬盘与主机的传输接口(ide sata scsi)ide接口可以接俩个IDE 设备,需要调整跳针设定主从磁盘.sata接口传输速度快易于安装散热装置,scsi接口的硬盘在控制上含有一块处理器运算速度快而且不会耗费cpu资源.20.主板上的芯片组负责计算机所有设备的通信,cpu通过I/O地址识别设备,各设备通过IRQ中断信道告知cpu该设备工作的状态信息以便于cpu进行分配任务.21.CMOS记载主板上的各种重要参数,如system time,cpu频率和电压,各项设备的I/O地址与IRQ中断等,记录这些需要电所以主板上才有电池.BIOS为写入某一闪存活eeprom的程序,开机执行时加载cmos中参数,尝试调用储存设备中的开机程序,进一步进入操作系统中.22.操作系统是管理和控制计算机系统中的软硬件资源,有效利用计算机的软硬件资源为用户提供一个功能强大,稳定的工作环境,从而为计算机和用户之间起到接口作用的一组程序.23.os提供了程序接口和用户接口,程序接口是程序员通过系统调用操作kernel控制硬件运行,编写的应用程序是操作系统提供的开发接口,所有只能运行在该操作系统之上.用户接口则用于用户与计算机交互,可通过GUI和CLI,其中CLI是命令行接口,需配置shell命令解释器,shell也是运行os之上的应用Linux操作系统基础知识大全:linux的规则与安装1.linux os是多用户多任务的操作系统,是类unix操作系统.linux 有内核版本与发行版本.2.linux之前unix的历史,贝尔实验室mulitics系统->ken thompson的unics(汇编)->ritchie写出unix内核(c语言).->bill joy 写出unix分支bsd--只适合自己计算机硬件,无法再其他架构运行(如不能再x86上运行)->minix系统x86架构的类unix系统->torvalds 写出linux内核.3.POSIX(portable operating system interface)可携式操作系统接口,用于规范内核与应用程序之间的接口.4.GNU与GPL,gnu项目和psf自由软件基金会,GPL通用公共许可证.linux是gnu项目所以开源,而当前的redhat等公司卖linux 发行版本卖的不是系统而是卖的服务.5.为了规范linux发行版本的差异,有fhs和lsb规范,所以各大linux发行版本不同的只是开发商的开发的管理工具和定制的软件不同.6.linux下一切皆文件,设备的访问入口也是以文件的形式存放,由目的单一的小程序组成,组合小程序完成复杂的任务,配置文件保存为TXT文本.7.硬件在linux中的文件名, IDE硬盘/dev/hd[a-d], sata或scsi硬盘/dev/sd[a-p].磁盘的第一个扇区保存俩个重要信息,主引导分区MBR[master boot record],446bytes,分区表记录硬盘分区状态有64bytes.系统开机会读取加载mbr,分区表只有64bytes,所以只能容纳4个分区,称为主分区或扩展分区.扩张分区的目的是利用额外的扇区来记录分区信息,扩展分区之下的分区称为逻辑分区.扩展分区只能有一个.8.MBR安装引导加载程序的地方,boot loader安装在这,boot loader是读取内核文件来执行的软件.具有的功能提供选择菜单载入内核文件转交其他loader.9.开机流程,BIOS读取cmos上的参数,读取加载mbr中的boot loader,进入操作系统.引导加载程序可以安装在mbr和引导扇区.10.每个分区都有自己的引导扇区,可开机的内核文件放置在各分区,loader只能识别自己分区的内核文件和其他的loader.loader可以将管理权交给另一个管理程序.11.window和linux的磁盘分区.windows下我们可以通过盘符划分磁盘.假设Windows下只有c可以当做盘符.那我们怎么划分区呢?我们可以在c盘建一个文件夹,然后把其他的分区装入到这个文件夹中,当我们访问我们在c盘建的文件夹是实际上访问的是这个分区。
linux的学习计划
![linux的学习计划](https://img.taocdn.com/s3/m/8419d0775627a5e9856a561252d380eb629423cf.png)
linux的学习计划一、初学者入门1.了解Linux系统首先,作为一个初学者,我们需要花时间去了解Linux系统的基本知识。
我们可以通过阅读相关的书籍、搜索网络资源,了解Linux的发展历程、特点以及应用领域等。
同时,可以安装一个虚拟机软件,如VirtualBox等,以及一个Linux发行版,如Ubuntu、CentOS 等,进行实际的操作体验。
2.学习基本的Linux命令学习Linux系统的命令是非常重要的,因为掌握了这些基本的命令,我们才能更方便地进行系统的管理和操作。
所以,初学者应该学习一些最基本的Linux命令,如ls、cd、mkdir、rm等,以及一些常用的文件管理命令、文件权限管理命令等。
3.学习Shell脚本编程Shell脚本是Linux系统的重要组成部分,能够帮助我们完成很多日常的任务。
初学者可以通过阅读相关的书籍、教程,学习Shell脚本编程的基础知识,例如变量、条件判断、循环等,然后通过实际的练习来熟悉这些知识。
4.了解Linux系统的网络相关知识在当今的网络时代,掌握Linux系统的网络相关知识也是非常重要的。
初学者可以学习一些基本的网络知识,如TCP/IP协议、网络配置、网络服务等,然后深入了解Linux系统中与网络相关的命令及配置。
5.参加一些培训课程为了更快地学习Linux系统的知识,初学者可以参加一些培训课程,如Linux基础课程、Linux网络课程等,通过专业的培训来系统地学习和掌握Linux系统的相关知识。
二、深入学习1.学习Linux系统的管理和配置深入学习Linux系统需要学习它的管理和配置知识。
这方面包括系统的安装与升级、用户和权限管理、磁盘管理、文件系统管理、系统日志等方面的知识。
通过学习这些知识,我们可以更好地进行系统的管理和维护工作。
2.学习Linux系统的安全性知识学习Linux系统的安全性知识也是非常重要的。
这方面包括防火墙配置、权限设置、密码管理等内容,还有一些常见的安全问题和防范措施。
Linux开发入门实战项目锻炼你的编程能力
![Linux开发入门实战项目锻炼你的编程能力](https://img.taocdn.com/s3/m/369c82d518e8b8f67c1cfad6195f312b3169eb09.png)
Linux开发入门实战项目锻炼你的编程能力Linux作为一种开源操作系统,被广泛应用于各种领域,特别是在软件开发和系统管理方面。
学习Linux开发将极大地提升你的编程能力和对操作系统的理解。
本文将介绍一些适合入门Linux开发的实战项目,帮助读者锻炼编程技能。
一、Shell脚本批量文件处理项目Shell脚本是Linux下常用的高级命令语言,可以用于进行各种文件处理任务。
通过编写Shell脚本,我们可以快速实现批量文件的复制、重命名、查找替换等操作。
例如,你可以尝试编写一个Shell脚本,将某个文件夹下的所有图片文件复制到另一个文件夹,并重命名为“图片1.jpg”、“图片2.jpg”等。
这个项目将锻炼你的Shell脚本编程技巧和文件操作的熟练度。
二、网络应用开发项目Linux提供了丰富的网络编程接口,可以开发各种网络应用程序,如Web服务器、FTP服务器等。
通过自己动手开发一个简单的网络应用程序,你可以深入了解网络协议、Socket编程和多线程编程等知识。
你可以选择开发一个简单的HTTP服务器,实现基本的请求响应功能。
这个项目将帮助你理解网络通信原理和服务器端编程的基本概念。
三、设备驱动开发项目Linux作为一个开放的操作系统,支持各种硬件设备。
通过学习设备驱动开发,你可以深入了解操作系统内核和硬件交互的原理。
你可以选择一个简单的硬件设备,如LED灯或按键模块,学习并编写相应的设备驱动程序。
这个项目将挑战你对底层硬件访问和操作系统内核的理解。
四、图形界面应用开发项目Linux提供了多种图形界面开发工具包,如GTK+、Qt等,可以开发各种跨平台的图形界面应用程序。
通过学习图形界面应用开发,你可以编写出更加友好和易用的应用程序。
你可以尝试开发一个简单的文本编辑器,实现基本的文本输入、编辑和保存功能。
这个项目将锻炼你的图形界面编程技能和用户交互设计能力。
五、系统性能优化项目Linux作为高性能的操作系统,可以通过各种优化手段提升系统性能。
linux计划任务问题:shell文件可以手动执行,计划任务却一直失败!
![linux计划任务问题:shell文件可以手动执行,计划任务却一直失败!](https://img.taocdn.com/s3/m/329c762ba22d7375a417866fb84ae45c3b35c28a.png)
linux计划任务问题:shell文件可以手动执行,计划任务却一直失败!1. 如果是sh脚本:直接在脚本前面加上: source /etc/profile2. 如果是python:source /etc/profile && python /mypath/myscript.py ...原因:crontab 不能自动从用户profile文件中读取环境变量参数。
具体解释如果没有生效,可以重启crontab服务,/etc/init.d/crond restart ;参考网页如果依然无法解决问题那么需要查看你的文件编码是否有问题:在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
查看脚本文件是dos格式还是unix格式的几种办法。
(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。
解决方法:(1)使用linux命令dos2unix filename,直接把文件转换为unix格式(2)使用sed命令sed -i "s/\r//" filename 或者sed -i "s/^M//" filename直接替换结尾符为unix格式(3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。
注意如果直接执行shell脚本,而放到定时任务中不成功,此时需要查看定时任务执行日志,如下命令可输出定时任务执行日志(./etc/profile; 为引入环境变量):*/5 * * * * ./etc/profile;/bin/sh /opt/bak.sh -> /opt/execronlog.txt 2>&1 &查看日志cat /opt/execronlog.txt:the input device is not a TTY若使用docker:#!/bin/bashsource /etc/profiledocker exec -it 3473faa6479a mysqldump -uroot -p1qaz@WSX oa > /data/mysql/backup/oa_$(date +"%Y%m%d%H%M%S").sql改为docker exec -i 3473faa6479a mysqldump -uroot -p1qaz@WSX oa > /data/mysql/backup/oa_$(date +"%Y%m%d%H%M%S").sql参考:https:///k8080880/article/details/78178502?utm_ medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase。
Linux基础知识部分的命令及任务整理
![Linux基础知识部分的命令及任务整理](https://img.taocdn.com/s3/m/31d607190740be1e650e9af7.png)
Linux基础知识部分的命令及任务整理1.5 与Linux进行交互三个简单命令小试牛刀1、whoami 显示当前登录用户的用户名whoami --help 显示whoami命令简短帮助文档whoami --version 显示whoami命令的版本信息2、echo “字符串” 在屏幕上回显字符串内容echo –n “字符串” 在屏幕上回显字符串内容之后不换行echo –e “字符串\n\n”输出反斜杠开头的转义字符(\n表示换一行,两个\n 表示换两行)3、nano 是一个文本编译工具,有自己的界面,保存ctrl+o,ctrl+g查看nano帮助文档,ctrl+x退出帮助文档,再按ctrl+x退出当前文档4、在终端中,有两个有用的功能:一是历史命令功能,用上下箭头来浏览并选择曾经输入过的命令;还可以使用history命令显示在哪行用过的命令,通过输入!#(#表示命令用的行号)即可自动输入。
二是命令补齐功能,输入命令的一部分时,按下tab键会帮输入剩下的字符,补充完整命令名称;如果有多个命令,则连按两下tab键,会显示所有相符的命令。
1.7 关闭和重启只有根用户root才有权限使用,ctrl+c或者shutdown -c取消关机命令-h选项是关机,-r选项是重启任务一:10分钟后关机(shutdown –h 10 系统将在10分钟后关机维护,维护时间大约20分钟,请各位保存好手头工作,以免数据丢失。
)任务二:今天午夜12点关机(shutdown –h 00:00)任务三:立即关机(shutdown –h now)其他关机重启指令reboot=shutdown –r now;halt=shutdown –h now;2管好文件2.1切换、创建和删除目录pwd 命令显示当前完整的工作目录clear 命令可以清除终端命令行cd 命令切换工作目录,熟悉特殊字符代表特定目录:.点号—表示当前工作目录..双点号—表示工作目录上层目录-连字符—表示前一个工作目录~波浪号—表示用户的家目录mkdir 创建目录(mkdir –p选项创建嵌套目录)任务:在当前目录下创建dirlevel01目录,同时在dirlevel01下创建dirlevel02目录。
centos,计划任务,删除文件
![centos,计划任务,删除文件](https://img.taocdn.com/s3/m/a0aeae1a854769eae009581b6bd97f192279bfc5.png)
centos,计划任务,删除文件:删除文件计划c entos 计划任务执行bat w7计划任务怎么删除计划任务让电脑崩溃篇一:LINUX(CENTOS)中的CRON计划任务配置方法1. crontab命令选项代码如下:#crontab -u -l, -r, -e;-u指定一个用户-l列出某个用户的任务计划-r删除某个用户的任务-e编辑某个用户的任务2. cron文件语法与写法可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件。
具体格式如下:代码如下:Minute Hour Day Month Week command分钟小时天月星期命令0-59 0-23 1-31 1-12 0-6 command每个字段代表的含义如下:代码如下:Minute 每个小时的第几分钟执行该任务Hour 每天的第几个小时执行该任务Day 每月的第几天执行该任务Month 每年的第几个月执行该任务DayOfWeek 每周的第几天执行该任务,0表示周日Command 指定要执行的程序、脚本或命令在这些字段里,除了Command是必须指定的字段以外,其它字段皆为可选。
对于不指定的字段,要用*来填补其位置。
3. 几个特殊符号的含义*代表取值范围内的数字,/代表每,-代表从某个数字到某个数字,,分开几个离散的数字4. 关于cron配置文件/etc/crontabcron 的主配置文件是/etc/crontab,它包括下面几行:代码如下:SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly前四行是用来配置cron 任务运行环境的变量:SHELL 变量的值指定shell 环境(此处默认为bash shell);PATH 变量定义用来执行命令的程序路径;cron 任务的输出被邮寄给MAILTO 变量定义的用户名,如果MAILTO 变量被定义为空白字符串(MAILTO=),电子邮件就不会被寄出;HOME 变量可以用来设置在执行命令或脚本时使用的主目录。
Linux基础入门教程
![Linux基础入门教程](https://img.taocdn.com/s3/m/959c68e7846a561252d380eb6294dd88d0d23d9b.png)
Linux基础⼊门教程Linux基础⼊门教程---------Linux学习路径Linux学习者,常常不知道⾃⼰改怎么学习linux:Linux初级,也就是⼊门linux前提是需要有⼀些计算机硬件相关的知识或是有⼀下计算机操作系统相关的理论知识linux系统的安装linux常⽤的命令的使⽤linux⽤户和⽂件的管理操作linux中⼀下常⽤软件的安装linux中基础⽹络的配置管理shell简单脚本的编写Linux中级:linux中服务相关的配置和搭建linux⾼级:linux程序开发---------------------参考的⽹址:https:///os/85895.html---------------ll 命令列出的⽂件的信息的7列信息的分析⽂件类型及⽂件的rwx硬链接数⽂件的所有者⽂件的所属组⽂件的⼤⼩⽂件的创建或修改的时间⽂件的名称----------------------------软链接是创建了⽂件的快捷⽅式,硬链接是copy了⼀份⽂件,硬链接⽂件的⼤⼩和rwx:r可读权限:可以查看⽂件的内容,可以列出⽬录⽂件中的内容w可写权限:可以修改⽂件内容,可以在⽬录⽂件中创建或删除指定的⽂件x可执⾏权限:可以运⾏某个⽂件,或可以进⼊⽬录⽂件中------------------locate 查找⽂件⽐find速度更快⼀些-----------|| 或:第⼀个命令执⾏成功,则第⼆个不执⾏,第⼀个命令执⾏失败,则执⾏第⼆个-------------0 (stdin)标准输⼊ 1 (stdout)标准输出 2 (stderr)标准错误输出输出重定向:就是把输出的结果显⽰到⼀个⽂件上(>表⽰输出重定向)----------------输⼊重定向:< 将右边⽂件中的内容或内容中的部分输⼊到右边-----------------ll命令Linux系统发布于1991年Linux系统的优点:免费,开源,稳定,多任务,多⽤户,具有良好的可移植性Linux对硬件的要求:i7以上,8G内存以上,反正RAM是越⼤越好禁⽤Linux的防⽕墙--------------查看Linux的⽹卡信息ifconfig重启⽹卡service network restart查看防⽕墙的状态service iptables status很多知识的博⼤精深,学起来还是需要费⼀些劲的ls命令 list 显⽰⽂件或⽬录ls -a 显⽰所有⽂件ls -l 显⽰⽂件的详细信息touch 创建⼀个⽂件mkdir 创建⼀个⽬录rm -rf ⽂件名删除⼀个⽂件----------------------------------cd . 表⽰当前⽬录cd .. 表⽰当前⽬录的上⼀级⽬录ls 查看当前⽬录的内容pwd 查看当前所在⽂件的路径terminal 相当于cmd 终端service network restart查看防⽕墙的状态service iptables status字符集选择UTF-8Xshell4远程⼯具操作Linux系统clear 假装清空的命令----------------------修改主机名:root@主机名hostname 名字vim /etc/sysconfig/network--------------Tab 补全的快捷命令- 开头的是普通的⽂件d 开头的是⽬录⽂件查看⼀个指定⽬录的⽂件信息ls -la /usrls -l /etc---------------Linux中⽂件的信息 ll⽂件的类型-⽂件的rwx权限- 硬链接数所有者(谁创建的) 所属组⽂件的⼤⼩⽂件的创建或修改时间⽂件的名称- 表⽰普通的⼆进制⽂件d 表⽰⽬录directoryl 表⽰软链接,快捷⽅式rwx r读权限 w write写权限 x execute 执⾏权限所有者 user 所属组 group 其他⼈ others------------vim中的命令模式,编辑模式,末⾏模式cp a.txt /usr/local/a.txt递归的copycp -r d1 /usr/local/d1rm remove删除⽂件rm -f 删除⽂件rm -r 删除⽬录rm -f a.txtrm -r d1/---------------------cat 查看100⾏内的⽂件内容more ⽤空格可以翻页 Enter可以下⼀⾏ Q键退出或是Ctrl+Chead -number ⽂件名查看⽂件的前⼏⾏tail -number ⽂件名查看⽂件的后⼏⾏mv 原⽂件新⽂件移动或重命名⽂件:剪切功能ln linkln -s 源⽂件⽬标⽂件创建软链接、软链接:所有⼈都可以访问,类似于快捷⽅式ln 源⽂件⽬标⽂件创建硬链接硬链接:硬链接的⼤⼩和源⽂件⼀样,且同步更新,类似于copy硬链接不能跨⽂件系统分区软链接可以权限处理chmod 命令change modelchmod ugo += rwx ⽂件或⽬录ugo: user group others给⽂件a.txt的user加上x权限chmod u+x a.txt给⽂件a.txt的user去掉x权限chmod u-x a.txt----------------------------rwx 421 7 读写执⾏权限-----------------------------递归的创建⽬录mkdir -p a/b/c⽂件夹的写权限,表⽰可以删除⽂件夹下的所有数据⽂件的写权限,表⽰是否可以对⽂件进⾏修改操作如果需要删除这个⽂件的权限,当前的⽂件所在的⽂件夹需要有写的权限才⾏⽬录的w权限表⽰:可以在⽬录下创建或是删除⽂件的权限⽬录的x权限表⽰:可以进⼊到这个⽬录中去⽬录的r权限表⽰:可以列出⽬录中的内容----------------------------------------------chown xxx 1.txt 改变⽂件的所有者chgrp admin b.txt 改变⽂件的所属组umask -S 查看系统默认的权限创建⼀个⽂件系统默认的权限就是755=777-022-----------------⽂件搜索命令find -userfind /etc -name initfind /etc -name *initfind /etc -name init 前⾯必须有4个1k=2 block 数据块100M=2*102400 block---------------------------ctime: c表⽰change 改变⽂件属性:所有者,所属组,权限atime: a表⽰access 表⽰被访问过的意思,被查看了mtime: m表⽰modify 更改内容的意思-时间表⽰时间之内+时间表⽰时间之外----------------------------找60分钟以内的修改⽂件find /etc -cmin -60找60分钟以外的修改⽂件find /etc -cmin +60-a and 逻辑的与:表⽰并且的意思find /etc -size +200000 -a -size 300000find /etc -size +200000 -a -name ca*-o or 逻辑的或find /etc -size +200000 -o -name ca*-----------------which 查看命令所在的⽬录位置whereis lswhich ls--------------------找到⼀个⽂件并执⾏某个命令找到etc⽬录中的1.txt并执⾏删除操作find /etc -name 1.txt -exec rm -f {} \;将本地⽬录中的⽂件查找后进⾏显⽰find /usr/local -exec ls -l {} \;找到所有名字有init开头的⽂件并将找到的所有⽂件显⽰出来find /etc -name init* -a -type f -exec ls -la {} \;查看⽂件的i节点ls -li----------------查看命令的描述whatis命令的帮助⽂档man查看某个命令的选项⽤法--help-------------------打包压缩tar-c ⽤tar打包⽂件-x 解压-v 显⽰打包操作的执⾏过程-f 指定压缩或解压后的⽂件名-z 压缩-C 解压后⽂件存放的路径tar -xzvf 软件包名.tar.gz -C /home/hao 将软件包名.tar.gz解压到指定的⽬录下(注意:-C为⼤写)zip 压缩后⽂件名称源⽂件unzip 需要解压缩的⽂件 -d 解压后⽂件的存放路径------------pingping 127.0.0.1ping 域名会得到域名对应的IP地址ping IP地址关机 poweroff清屏 Ctrl+L退出或中断当前操作 Ctrl+C命令⾃动补全:Tab-----------grep 过滤| 管道 popels -l /etc |morels -l /etc |grep initls -l /etc |grep init |wc -l----------------输⼊输出重定向0 stdin 标准输⼊1 stdout 标准输出2 stderr 标准错误输出输出重定向:将,命令的执⾏结果,存放到⼀个⽂件中去> 表⽰重定向:表⽰重新覆盖写⼊>> 表⽰在原⽂件的内容的最后⾯添加写⼊错误信息的重定向2>---------------输⼊重定向:将⼀个⽂件中的内容,读出来显⽰到另外⼀个位置<wall < 1.txt----------------------vim Linux系统中最常⽤的⽂本编辑器刚进⼊的是:命令模式i 光标前插⼊A 本⾏的⾏末尾追加内容a 在光标后追加⽂本内容o 在下⼀⾏插⼊O 在上⼀⾏插⼊ao插⼊模式,编辑模式ESC 末⾏模式冒号模式:wq 保存并退出vimset nu 让⽂本显⽰⾏号set nonu 取消⽂本的⾏号vim ⽂件名vi 与vim之间的区别就是⽂本的颜⾊显⽰---------------强制关闭vim 造成的错误,需要删除产⽣的临时⽂件,才能再次编辑⽂本---------⽤户信息的⽂件/etc/passwd密码⽂件/etc/shadow⽤户组⽂件/etc/group⽤户组的密码⽂件/etc/gshadow---------------------Linux中⽤户的分类超级⽤户uid=0的⽤户,⼀般root⽤户是uid为0的⽤户普通⽤户创建⽤户的时候不指定uid的话,默认系统中的uid是⾃增的uid=500-60000伪⽤户:Linux系统中任何进程操作都需要有⼀个⽤户的⾝份-------------------添加⽤户组groupadd删除⽤户组groupdel修改⽤户组groupmod -n 新组名旧组名-------------------------------添加⽤户的操作u: UIDg:G:d:指定添加的⽤户的家⽬录e: 指定添加的⽤户的时效时间----------------------------------修改⽤户usermod -l 新⽤户名旧⽤户名禁⽤⽤户名usermod -L 需要禁⽤的⽤户名解除禁⽤的⽤户名usermod -U 需要解禁的⽤户名禁⽤⽤户的密码passwd -I 需要禁⽤的⽤户名解禁⽤户的密码passwd -u 需要解禁的⽤户名程序是静态的,进程是程序执⾏的过程,是动态的,是有⼀定的⽣命周期的,是动态产⽣和消亡的Linux中进程分为:前台进程和后台进程常⽤的命令都是前台进程前台进程在使⽤的时候是需要占⽤终端的,后台进程在使⽤的时候是不需要占⽤终端的---------------------------ps -el 查看所有的进程,包括没有终端的进程ps -aux 显⽰当前进程占⽤CPU和内存的百分⽐ps -el --sort pid 对进程进⾏排序,ps -aux |grep rpc 对进程结果进⾏过滤-------------关闭进程 kill 进程号强制关闭进程 kill -9 进程号重启进程 kill -1 进程号---------Ctrl+C 终⽌⼀个程序的运⾏-------top 实时监控系统中的进程和性能------------Linux中的计划任务at 在某⼀时刻执⾏⼀次cron 周期性的执⾏的删除计划任务at -d 任务编号at -l 查看任务crontab -l 显⽰当前的计划任务crontab -r 删除当前的计划任务crontab -e 编辑当前的计划任务查看计划任务的程序是否启动了ps -el |grep crond⼿动的启动⼀下/etc/rc.d/init.d/crond start---------------crontab ⽂件保存在 /var/spool/cron ⽬录中------------Linux中的⽬录Linux中的软件的安装的仓库学会shell脚本后,你⾃⼰可以编写shell脚本,你也可以看懂别⼈写的脚本很多的事情不是会了才去做的,⽽是做了才会的linux 李纽克斯利尼克斯⾥纳克斯linux创始⼈,林纳斯-脱袜⼦------------------Linux是从unix模仿和改编⽽来的组管理和权限管理:linux中每个⽤户必须属于⼀个组⽂件:所有者,所在组,其他⼈查看⽂件的所有者:ls -ahl创建⼀个组groupadd xxx在组下⾯创建⼀个⽤户useradd -g xxx ssschown 修改⽂件的所有者修改某个⽂件的所在组chgrp 组名指定的⽂件usermod -g 组名⽤户名usermod -d ⽬录名⽤户名查看⼀个⽤户的信息id 指定的⽤户名===================================压缩和解压命令gzip和gunzipgzip 压缩为 .gz⽂件, 压缩后源⽂件会被删除gunzip 解压.gz压缩⽂件zip ⽤于压缩为.zip压缩⽂件unzip解压.zip压缩⽂件将home⽬录中的⽂件压缩为myzip.zip⽂件zip -r myzip.zip /home/将myzip.zip解压到/opt/tmp/unzip -d /opt/tmp/ myzip.ziptar打包压缩命令tar压缩后的⽂件为 .tar.gz⽂件tar -zcvf xxx.tar.gz 需要压缩的⽂件名将home下所有⽂件进⾏打包压缩tar -zcvf myhome.tar.gz /home/将myhome.tar.gz解压到当前⽬录下tar -zxvf myhome.tar.gz将myhome.tar.gz解压到已存在的/opt/tmp/⽬录中tar -zxvf myhome.tar.gz -C /opt/tmp/===================================unix是1973年⽤C语⾔编写的===================================⽤户配置⽂件/etc/passwd⽤户名 : 密码 : ⽤户id : 组id : 家⽬录 : shell存放⽤户密码的⽂件,加密过的密码/etc/shadow组配置⽂件/etc/group===================================→←root密码找回:开机的时候按enter键use the ↑and ↓keys to select which entry is highlightedpress enter to boot the selected os e to edit the commandsbefore booting a to modify the kernel argumentsbefore booting or c for a command line按 e选中kernel⾏use the ↑and ↓keys to select which entry is highlightedpress b to boot e to edit the selected command in the boot sequence c for a command-line oto open a new line after o for before the selected line d to remove the selected line or escape to go back to the main menu 输⼊ 1 然后enter按 b 进⼊的是单⽤户的模式,单⽤户模式不需要⽤root密码可以直接进系统passwd root设置⼀个新的root密码===================================man帮助命令help帮助命令pwd 显⽰当前的⼯作⽬录的绝对路径ls 显⽰当前⽬录下的⽂件和⽬录ls -l 显⽰当前⽬录下的⽂件和⽬录的详细信息ls -lh ⽤常规的单位查看⽂件cd 切换⽬录绝对路径:从根⽬录开始定位相对路径:从当前⼯作⽬录开始定位到需要的⽬录去..表⽰上级⽬录mkdir 创建⽬录依次创建多级⽬录mkdir -p /⽬录1/⽬录2/⽬录3rmdir 只能删除空⽬录rm -rf 可以删除任何⽂件或⽬录cp 复制⽂件或⽬录cp 需要复制的⽂件或⽬录复制到的⽬录路径cp -r 需要复制的⽂件或⽬录复制到的⽬录路径touch 命令mv命令剪切:mv 需要剪切的⽂件或⽬录剪切到的⽬录cat -n 显⽰⾏号的查看⽂件的内容分页显⽰⽂件内容 cat -n ⽂件名 |moremore命令,以全屏的⽅式,分页查看⽂件的内容less命令,功能更强的查看⽂件内容,查看⼤⽂件速度较快> 输出重定向,覆盖写⼊>> 追加,追加写⼊cal 显⽰当前的⽉份的⽇历echo 爱考打印内容echo $PATH 查看当前环境变量的路径head 查看⼀个⽂件开头部分前⼏⾏的内容head -n 5 显⽰前5⾏的内容head 默认显⽰⼀个⽂件的前10⾏的内容tail 默认显⽰⽂件的后10⾏的内容tail -n 5 显⽰后5⾏的内容tail 实时刷新查看的⽂件内容,如果⽂件内容有变化,tail的显⽰结果就跟着变化,可以起到实时监控的作⽤ln 软链接命令,类似于windows上的快捷⽅式ln -s /root LinkToRoot 给/root创建了⼀个快捷⽅式,LinkToRoot删除软链接:rm -rf LinkToRoothistory 查看已经执⾏过的历史命令history 10 显⽰最近执⾏过的10条命令!历史命令的编号再次执⾏⼀遍历史编号的命令date 显⽰当前时间date "+%Y %m %d %H:%M:%S" 显⽰年⽉⽇时分秒date -s "2018-11-11 11:11:11" 给系统设置指定的时间calender ⽇历cal 2018 显⽰2018年的⽇历cal 显⽰当前⽉份的⽇历find 在⽬录中找包含关键词的⽂件find ⽬录的路径 -name 需要查找的⽂件名,或者⽂件名的关键词find ⽬录的路径 -user ⽤户名,按照⽂件的拥有者查找⽂件find ⽬录的路径 -size +100m 找出所有⼤于100M的⽂件Ctrl+C 终⽌当前命令的执⾏locate 查询速度⽐较快,updatedb 更新数据库locategrep 过滤,查找⽂件内容grep -n 显⽰查找结果和对应的⾏号grep -i 查找的时候忽略⼤⼩写|管道符,表⽰将前⼀个命令的执⾏结果,作为后⾯命令的执⾏条件家⽬录:linux中⼀个⽤户⾄少得有⼀个⽤户组,可以有多个⽤户组新建⽤户useradd ⽤户名useradd新建⽤户的时候默认新建了⼀个相同名字的组useradd -d /home/xxx ⽤户名指定的⽬录需要提前存在cd 是指change directory 切换⽬录删除⽤户userdel ⽤户名userdel -r ⽤户名删除⽤户并删除这个⽤户的家⽬录实际⼯作中只删除⽤户名,不删除⽤户对应的家⽬录查询⼀个⽤户的信息:⽤户id号,组id号,所在组的名称id ⽤户名whoami 查看当前系统登录的⽤户⽤切换⽤户su - 需要切换到的⽤户名exit 返回到原来切换前的⽤户新建组groupadd 组名删除组groupdel 组名新建⽤户的时候就指定对应的组useradd -g 组名⽤户名修改⽤户的组usermod -g 新⽤户组⽤户名关机:shutdown -h now ⽴即关机shutdown -h 1 表⽰1分钟后关机shutdown -r now ⽴即重启halt 关机poweroff 关机reboot 重启sync 把内存中的数据同步到磁盘中去,把没有保存的数据进⾏保存操作,关机或者重启时最好先执⾏⼀下sync防⽌数据丢失logout 注销当前⽤户,⽤于远程登录,在本地主机中⽆效===================================vim复制当前⾏yy粘贴 p从当前⾏开始复制5⾏ 5yy粘贴 p删除当前⾏ dd从当前⾏开始删除5⾏ 5dd设置⾏号 :set nu取消⾏号 :set nonu末⾏模式下输⼊ u 表⽰撤销操作G 跳到末⾏gg 跳到⾏⾸20 Shift+g 跳到第20⾏===================================Xshell⼯具Xftp⼯具,上传和下载⽂件的⼯具linux系统中的远程服务sshd服务22端⼝setup 系统服务查看⼀下sshd是否是开启状态的远程⼯具的乱码问题⽤UTF-8的编码格式===================================Linux中⼀切皆⽂件,所有的设备或者硬件都映射为⼀个⽂件来进⾏管理bin 命令⽬录,是binary的简写dev 设备⽂件etc 配置⽂件home 家⽬录lib 动态库⽂件media 光驱,U盘⽂件识别后会存放在这个⽬录中mnt 挂载⽂件夹,识别其他⽂件系统的⽂件opt 安装的软件存放⽬录proc 系统内核⽂件root 管理员⽤户sbin 管理员使⽤的命令selinux 安全⽂件夹,Security-Enhanced Linux)简称 SELinuxtmp 临时⽂件夹usr ⽤户安装的⽂件或⽂件夹usr/local 安装的外加软件的默认的安装⽬录var 不断变化的⽂件,像⽇志⽂件的存放位置boot 系统的启动引导⽂件lost+found 系统⾮正常关机后⽣成的⼀些⽂件的存放位置Linux系统中有且只有⼀个根⽬录/Linux是以⽂件的形式来管理设备的,所以linux系统中⼀切皆⽂件\反斜杠===================================虚拟机的⽹络连接的三种形式模型桥连接:虚拟机的IP与真实主机的IP在同⼀⽹段中,容易出现IP冲突,去掉⽹关1和⼴播地址255:255-2=253个可⽤的IP,会出现IP地址不够⽤的情况NAT模式:真实主机上有两个IP⼀个IP与虚拟机中的ip在同⼀个⽹段上,Linux可以访问外⽹不会造成IP冲突,仅主机模式:Linux上的IP地址是⼀个独⽴的IP⽹段,不能访问外⽹所以⼀般虚拟机建议使⽤NAT模式Tab键选择OK或者Skip/根分区/swap分区===================================windows与Linux的区别windows是收费的系统Linux是免费,可定制再发布的系统听⼀嘴吧===================================登录Linux后,我们就可以在#或$符后⾯去输⼊命令,有的时候命令后⾯还会跟着选项(options)或参数(arguments)find查找⼀个⽂件在系统中的什么位置,locate是神速版本的find(Windows下有个神器Everything和locate功能类似)--------------------年轻的时候,我们的⽣活中根本就不应该有下班这个概念,我们需要⼏乎所有的时间来使⾃⼰成为⼀个更好的⼈,更优秀的⼈⼀个⼈宝贵的就是时间,优秀的技术技能绝不是朝九晚五就可以解决的,⽽是靠⾃觉和⾃我剥削来完善⾃⼰。
linux定时任务基础命令介绍(14)
![linux定时任务基础命令介绍(14)](https://img.taocdn.com/s3/m/a4822f3b657d27284b73f242336c1eb91a37334b.png)
linux定时任务基础命令介绍(14)在计算机的使⽤过程中,经常会有⼀些计划中的任务需要在将来的某个时间执⾏,linux中提供了⼀些⽅法来设定定时任务。
1、at命令at从⽂件或标准输⼊中读取命令并在将来的⼀个时间执⾏,只执⾏⼀次。
at的正常执⾏需要有守护进程atd:#安装atyum install -y at 或 apt-get install at -y#启动守护进程service atd start 或 systemctl start atd#查看是否开机启动(关于systemctl请看这⼀篇)chkconfig --list|grep atd 或 systemctl list-unit-files|grep atd#设置开机启动chkconfig --level 235 atd on 或 systemctl enable atd如果不使⽤管道|或指定选项-f的话,at的执⾏将会是交互式的,需要在at的提⽰符下输⼊命令:[root@centos7 temp]# at now +2 minutes #执⾏at并指定执⾏时刻为现在时间的后两分钟at> echo hello world > /root/temp/file #⼿动输⼊命令并回车at> <EOT> #ctrl+d 结束输⼊job 9 at Thu Dec 22 14:05:00 2016 #显⽰任务号及执⾏时间[root@centos7 temp]#选项-l或命令atq查询任务[root@centos7 temp]# atq9 Thu Dec 22 14:05:00 2016 a root到达时间后任务被执⾏,⽣成⼀个新⽂件file并保存echo的输出内容[root@centos7 temp]# ls -l file-rw-r--r-- 1 root root 12 12⽉ 22 14:05 file[root@centos7 temp]# cat filehello world[root@centos7 temp]#at指定时间的⽅法很丰富,可以是1)hh:mm⼩时:分钟(当天,如果时间已过,则在第⼆天执⾏)2)midnight(深夜),noon(中午),teatime(下午茶时间,下午4点),today,tomorrow等3)12⼩时计时制,时间后加am(上午)或pm(下午)4)指定具体执⾏⽇期mm/dd/yy(⽉/⽇/年)或dd.mm.yy(⽇.⽉.年)5)相对计时法now + n units,now是现在时刻,n为数字,units是单位(minutes、hours、days、weeks)如明天下午2点20分执⾏创建⼀个⽬录[root@centos7 temp]# at 02:20pm tomorrowat> mkdir /root/temp/Xat> <EOT>job 11 at Fri Dec 23 14:20:00 2016选项-d或命令atrm表⽰删除任务[root@centos7 temp]# at -d 11 #删除11号任务(上例)[root@centos7 temp]# atq[root@centos7 temp]#可以使⽤管道|或选项-f让at从标准输⼊或⽂件中获得任务[root@centos7 temp]# cat test.txtecho hello world > /root/temp/file[root@centos7 temp]# at -f test.txt 5pm +2 daysjob 12 at Sat Dec 24 17:00:00 2016[root@centos7 temp]# cat test.txt|at 16:20 12/23/16job 13 at Fri Dec 23 16:20:00 2016atd通过两个⽂件/etc/at.allow和/etc/at.deny来决定系统中哪些⽤户可以使⽤at设置定时任务,它⾸先检查/etc/at.allow,如果⽂件存在,则只有⽂件中列出的⽤户(每⾏⼀个⽤户名),才能使⽤at;如果不存在,则检查⽂件/etc/at.deny,不在此⽂件中的所有⽤户都可以使⽤at。
Linux终端中的计划任务管理
![Linux终端中的计划任务管理](https://img.taocdn.com/s3/m/8774201c182e453610661ed9ad51f01dc28157c0.png)
Linux终端中的计划任务管理Linux操作系统提供了强大的终端工具,其中之一就是计划任务管理。
计划任务管理可以帮助用户在特定的时间或者在一定的条件下自动执行特定的命令或脚本。
本文将介绍Linux终端中的计划任务管理,并提供一些常见的用法和示例。
一、什么是计划任务管理计划任务管理是指在Linux系统中,使用计划任务工具来创建、编辑、删除和查看计划任务。
计划任务可以被设置为在特定的时间点执行,也可以设定为在特定的时间间隔循环执行。
计划任务管理可以帮助用户自动执行重复性的任务,提高工作效率。
二、常用的计划任务管理工具在Linux系统中,有多种计划任务管理工具可供选择,如cron、at 等。
本节将介绍两种常用的计划任务管理工具。
1. croncron是一个非常常用的计划任务管理工具,它能够在指定的时间间隔或特定的时间点执行命令或脚本。
cron以系统进程的形式存在,通过读取配置文件来管理计划任务。
cron的配置文件位于/etc/crontab,用户可以通过编辑该文件来添加、修改和删除计划任务。
每条计划任务的格式如下:```分钟小时日月周命令```其中,分钟指定任务执行的分钟数(0-59),小时指定任务执行的小时数(0-23),日指定任务执行的日期(1-31),月指定任务执行的月份(1-12),周指定任务执行的星期几(0-7,其中0和7都表示周日),命令指定要执行的命令或脚本的路径。
以下是一个示例:```0 2 * * * /usr/local/bin/backup.sh```上面的示例表示在每天的凌晨2点执行/usr/local/bin/backup.sh脚本。
2. atat是另一个常用的计划任务管理工具,它允许用户在一个特定的时间点执行一次性的任务。
at以守护进程的形式存在,通过读取用户的命令来管理计划任务。
用户可以使用at命令来添加计划任务。
以下是一个示例:```$ at 10:00 PMat> /usr/local/bin/backup.shat> CTRL+D```上面的示例表示在晚上10点执行/usr/local/bin/backup.sh脚本。
Linux实验八计划任务管理
![Linux实验八计划任务管理](https://img.taocdn.com/s3/m/d0497a2a8bd63186bdebbc79.png)
实验八方案任务管理
一、实验内容:使用at和cron效劳实现Linux进程调度方法。
二、具体步骤
(一) 通过at命令实现方案任务
1、2分钟后执行 /bin/date
3、查找系统中任何以c为后缀名的文档,将将结果保存到/lx/findc文件中,指定时间为2021年12月28日下午1点
4、将第3题的命令写到/lx/findjob中,使用at命令执行,并将结果保存到/lx/findfc中,指定时间为当前时间后的3分钟
5、at命令实现今晚23:00定时关机
6、at命令实现在3天后统计/etc/inittab文件的行数,将统计结果送至/lx/initline文件中
7、列出现有的所有at任务,并记下相关信息(提示:atq命令)
8、删除某at任务,并进行查看是否删除(提示:atrm 任务号命令)
(二) 通过cron命令实现方案任务
1、使用cron命令实现下午12月每天下午1:00点系统进行维护状态,重新启动系统
2、使用cron命令实现在11月20日星期5的20点30分查看 /etc/passwd 内容,将将查看结果送至/lx/passtext
3、使用cron命令实现每周一至周五3点钟,在目录/home中,查找文件名为*.c,且是4天内的修改正的文件,对满足该条件的文件进行删除。
4、查看当前的crontab文件
5、删除用户liyang的crontab文件
6、使用cron实现每天的3点30备份/etc目录,将备份文件保存
/lx/etc.tar.gz.
7、将(6)题进行扩展,要求保存的文件的名称为/lx/etc+年月日.tar.gz,其它要求不变.
三、实验小结和实验心得。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-r删除某个用户的任务,
-e编辑某个用户的任务
3.cron文件语法:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
1、linux任务调度的工作主要分为以下两类:
*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
*个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
2.crontab命令选项:
-u指定一个用户,
sh /bin/runbea.sh
具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
11 2 21 10 * rm -rf /mnt/fb
Linux添加Oracle定时计划任务
root用户执行以下命令
crontab -e
00 01 * * * su - oracle -c '/backup/backup.sh'
Linux
要开机 运行只需将它加入到 rc.local ,一般为/etc/rc.d/rc.local 在其中加入以下行:
大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
例如: 1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务
例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
注:2>&1 表示执行结果及错误信息。
编辑/etc/crontab 文件配置cron
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
举例如下:
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
Linux操作系统定时任务系统 Cron 入门
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
4.记住几个特殊符号的含义:
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
一、任务调度设置文件的写法
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
00 01 * * * su - oracle -c '/backup/backup.sh'
crontab -l -u jp //列出用户jp的所有调度任务
四、删除任务调度工作
crontab -r //删除所有任务调度工作
五、任务调度执行结果的转向
二、新增调度任务
新增调度任务可用两种方法:
1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
三、查看调度任务
crontab -l //列出当前的所有调度任务 例如
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:
1.直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r