Home
Posts
Tag
About
常用shell命令
常用shell命令
2019-03-27 15:54:53
#运维
#shell
#crontab
#### crontab ```shell crontab -l # 列出当前用户的任务列表 -e # 编辑 # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * {command to be executed} # 举个例子 # 每分钟执行一次 */1 * * * * command # 每小时执行一次,分钟位置需要写0,若写*则表示11点0~59每分钟执行一次 0 */1 * * * command # 每天的0点和12点各执行一次 0 0,12 * * * command ``` #### curl 静默请求一个地址可以使用“-s”参数 ```bash curl -s [地址] ``` #### & 后台执行命令 当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。 如: ```bash 30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh & ``` 在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。 不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中: 如: ```bash command >out.file 2>&1 & ``` 在这个例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。 #### /dev/null 2>&1 先看一个例子: ```bash 0 2 * * * /u01/test.sh >/dev/null 2>&1 & ``` 这句话的意思就是在后台执行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。 |数字|含义| |--|--| |0|键盘输入| |1|标准输出| |2|错误输出| 我们也可以这样写: ```bash 0 2 * * * /u01/test.sh 1>/u01/out.file & 0 2 * * * /u01/test.sh 2>/u01/out.file & 0 2 * * * /u01/test.sh 2>/u01/out.file 2>&1 & ``` 将tesh.sh 命令输出重定向到out.file, 即输出内容不打印到屏幕上,而是输出到out.file文件中。 #### 2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件```out.file```。```&```的意思是后台执行。```&1``` 表示的是文件描述1,表示标准输出,如果这里少了```&```就成了数字```1```,就表示重定向到文件1。 ```bash command > file 2>&1 == command 1> file 2>&1 ls 2>1 # 不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1 # 没有xxx这个文件的错误输出到了1中; ls xxx 2>&1 # 不会生成1这个文件了,不过错误跑到标准输出了; ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>& # 因为重定向符号>默认是1,这句就把错误输出和标准输出都传到out.txt 文件中。 ``` 首先是```command > file```将标准输出重定向到```file```中, ```2>&1``` 是标准错误拷贝了标准输出,也就是同样被重定向到```file```中,最终结果就是标准输出和错误都被重定向到```file```中。```2>&1```是 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。```>file``` 后输出才被重定向到file,但标准错误仍然保持在终端。