linux指令语法

阳光穿透心脏的1/2处 2024-04-17 21:02 151阅读 0赞
  1. crontab配置
  2. linux中支持定时任务的软件叫:crond服务
  3. 安装crontab
  4. yum install crontabs
  5. 服务操作说明:
  6. service crond start ## 启动服务
  7. service crond stop ## 关闭服务
  8. service crond restart ## 重启服务
  9. service crond reload ## 重新载入配置
  10. ## 查看crontab服务状态:
  11. service crond status
  12. ## 手动启动crontab服务:
  13. service crond start
  14. ## 查看crontab服务是否已设置为开机启动,执行命令:
  15. chkconfig --list
  16. ## 加入开机自动启动:
  17. chkconfig --level 35 crond on
  18. 修改任务计划的命令格式
  19. crontab [-u user] file
  20. crontab [-u user] [ -e | -l | -r ]
  21. 参数说明:
  22. -u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
  23. filefile是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab
  24. -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
  25. -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
  26. -r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
  27. -i:在删除用户的crontab文件时给确认提示。
  28. 必掌握:
  29. crontab -l [-u user] ## 列出用户目前的crontab.
  30. crontab -e [-u user] ## 编辑用户目前的crontab.
  31. crontab -e
  32. */1 * * * * echo “haha” >> /root/haha.txt
  33. */1 * * * * echo “xixi” >> /root/xixi.txt
  34. 编辑的这个文件在/var/spool/cron
  35. 删除定时任务
  36. crontab -r
  37. 调度配置
  38. 4.1 配置说明
  39. 基本格式 :
  40. *  *  *  *  *  command
  41. 分  时  日  月  周  命令
  42. 1列表示分钟159 每分钟用*或者 */1表示
  43. 2列表示小时0230表示0点) 7-9表示:7点到9点之间
  44. 3列表示日期131
  45. 4列表示月份112
  46. 5列标识号星期060表示星期天)
  47. 6列要运行的命令
  48. 配置示例
  49. */1 * * * * date >> /root/date.txt
  50. 上面的例子表示每分钟执行一次date命令
  51. 30 21 * * * /usr/local/etc/rc.d/httpd restart
  52. 上面的例子表示每晚的21:30重启apache
  53. 45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart
  54. 上面的例子表示每月11022日的4 : 45重启apache
  55. 10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart
  56. 上面的例子表示每周六、周日的1 : 10重启apache
  57. 0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart
  58. 上面的例子表示在每天18 : 0023 : 00之间每隔30分钟重启apache
  59. 0 23 * * 6 /usr/local/etc/rc.d/httpd restart
  60. 上面的例子表示每星期六的11 : 00 pm重启apache
  61. * */1 * * * /usr/local/etc/rc.d/httpd restart
  62. 上面的例子每一小时重启apache
  63. * 23-7/1 * * * /usr/local/etc/rc.d/httpd restart
  64. 上面的例子晚上11点到早上7点之间,每隔一小时重启apache
  65. 0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart
  66. 上面的例子每月的4号与每周一到周三的11点重启apache
  67. 0 4 1 jan * /usr/local/etc/rc.d/httpd restart
  68. 上面的例子一月一号的4点重启apache
  69. shell编程
  70. Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
  71. Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linuxshell命令编程>
  72. 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的
  73. 基本格式
  74. 代码写在普通文本文件中,通常以 .sh为后缀名
  75. vi hello.sh
  76. #!/bin/bash ## 表示用哪一种shell解析器来解析执行我们的这个脚本程序
  77. echo "hello world" ## 注释也可以写在这里
  78. ## 这是一行注释
  79. 执行脚本
  80. sh hello.sh
  81. 或给脚本添加x权限,直接执行
  82. chmod 755 hello.sh
  83. ./hello.sh
  84. 基本语法
  85. 2.2.1 系统变量
  86. Linux Shell中的变量分为“系统变量”和“用户自定义变量”
  87. 可以通过set命令查看变量
  88. 系统变量:$HOME$PWD$SHELL$USER等等
  89. [root@hdp01 ~]# a=1
  90. [root@hdp01 ~]# set
  91. 打印变量的值:
  92. [root@hdp01 ~]# a=hello world
  93. -bash: world: command not found
  94. 多了一个空格,world命令不存在
  95. [root@hdp01 ~]# a="hello world"
  96. [root@hdp01 ~]# echo $a
  97. hello world
  98. 在变量a的输出hello world后边+s
  99. [root@hdp01 ~]# echo $a+"s"
  100. hello world+s
  101. [root@hdp01 ~]# echo $a"s"
  102. hello worlds
  103. [root@hdp01 ~]# echo $as
  104. 或者
  105. [root@hdp01 ~]# echo ${a}s
  106. hello worlds
  107. 自定义变量
  108. 1、语法
  109. 变量=值 (例如STR=abc
  110. 等号两侧不能有空格
  111. 变量名称一般习惯为大写
  112. 使用变量: $arg
  113. 双引号和单引号有区别,
  114. 双引号仅将空格脱意,
  115. 单引号会将变量引用比如$param脱意
  116. 2、示例
  117. STR="hello world"
  118. A=9
  119. echo $A
  120. echo $STR
  121. 如果想打印 hello worlds is greater 怎么办?
  122. echo $STRs is greate 行吗?
  123. 不行,正确写法是:
  124. echo ${STR}s is greate
  125. unset A 撤销变量 A
  126. readonly B=2 声明静态的变量 B=2,不能 unset 只读变量
  127. export A #可把变量提升为当前shell进程中的全局环境变量,可供其他子shell程序使用
  128. 总结:
  129. 1a.sh中直接调用b.sh,会让b.sha所在的bash进程的“子进程”空间中执行
  130. 2、而子进程空间只能访问父进程中用export定义的变量
  131. 3、一个shell进程无法将自己定义的变量提升到父进程空间中去
  132. 4、“.”号执行f脚本时,会让脚本在调用者所在的shell进程空间中执行
  133. 3、反引号赋值
  134. A=`ls -la` ## 反引号,运行里面的命令,并把结果返回给变量A
  135. A=$(ls -la) ## 等价于反引号
  136. 4、特殊变量
  137. $? 表示上一个命令退出的状态码(0-255)
  138. $$ 表示当前进程编号
  139. $0 表示当前脚本名称
  140. $n 表示n位置的输入参数(n代表数字,n>=1
  141. $# 表示参数的个数,常用于循环
  142. $*和$@ 都表示参数列表
  143. expr
  144. 格式 expr m + n $((m+n)) 注意expr运算符间要有空格
  145. 例如计算(23 )×4 的值
  146. 1 .分步计算
  147. 赋值:
  148. [root@hadoop2 home]# S=`expr 2 + 3`
  149. [root@hadoop2 home]# B=`expr $S \* 4` ## *号需要转义
  150. [root@hadoop2 home]# echo $B
  151. 2.一步完成计算
  152. expr `expr 2 + 3 ` \* 4
  153. echo `expr \`expr 2 + 3\` \* 4`
  154. 2、用(())
  155. ((1+2))
  156. (((2+3)*4))
  157. count=1
  158. ((count++))
  159. echo $count
  160. 报错
  161. -bash: syntax error near unexpected token `('
  162. 但是要想取到运算结果,需要用$引用
  163. a=$((1+2))
  164. 3、用$[]
  165. a=$[1+2]
  166. echo $a
  167. 4、用let
  168. i=1
  169. let i++
  170. 流程控制
  171. 2.5.1 if语法
  172. 1、语法格式
  173. if condition
  174. then
  175. statements
  176. [elif condition
  177. then statements. ..]
  178. [else
  179. statements ]
  180. fi
  181. 2、示例
  182. #!/bin/bash
  183. read -p "please input your name:" NAME ## read命令用于从控制台读取输入数据
  184. ## printf '%s\n' $NAME
  185. if [ $NAME = root ]
  186. then
  187. echo "hello ${NAME}, welcome !"
  188. elif [ $NAME = ydhl2]
  189. then
  190. echo "hello ${NAME}, welcome !"
  191. else
  192. echo "SB, get out here !"
  193. fi
  194. 问题:[root@hdp01 ~]# ./nihao.sh
  195. please inter your name:!huangxiaoming
  196. hello huangxiaoming ,welcom
  197. 应该是输出SB, get out here !
  198. 原因:
  199. if [ $NAME=root ] =号左右没有空格 $NAME=root默认是输入一个参数,只要这个参数(不包括什么也不输入会报错),就永远都是true,条件永远成立
  200. 所以注意=号左右的空格
  201. 可以这么写:
  202. #!/bin/bash
  203. read -p "please inter your name:!" NAME
  204. if [ ! -n "$NAME" ]; then echo "please nest time enter your name!"
  205. elif [ $NAME = root ]
  206. then
  207. echo "hello $NAME , welcome!"
  208. elif [ $NAME = xiaoming ]
  209. then
  210. echo "hello $NAME ,welcom"
  211. else
  212. echo "sb,get out here!"
  213. fi
  214. 3、判断条件
  215. 1/ 条件判断基本语法
  216. [ condition ] (注意condition前后要有空格)
  217. #非空返回true
  218. [ edu360 ]
  219. #空返回false
  220. [ ]
  221. 注意[ ]内部的=周边的空格,有区别:
  222. [root@shizhan01 scripts]# if [ a = b ];then echo ok;else echo notok;fi
  223. notok
  224. [root@shizhan01 scripts]# if [ a=b ];then echo ok;else echo notok;fi
  225. ok
  226. 短路(理解为三元运算符)
  227. [ condition ] && echo OK || echo notok
  228. [root@hadoop2 home]# a=2
  229. [root@hadoop2 home]# b=2
  230. [root@hadoop2 home]# [ $a = $b ] && echo ok || echo notok
  231. 条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句
  232. 2/ 条件判断组合
  233. 注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 && || 符号
  234. 而[] 里面逻辑组合可以用 -a -o
  235. 一下a,b,c取值代表的是字母,
  236. [root@mini ~]# if [ a = b && b = c ]; then echo ok;else echo notok;fi
  237. -bash: [: missing `]'
  238. notok
  239. [root@mini ~]# if [ a = b -a b = b ]; then echo ok;else echo notok;fi
  240. notok
  241. [root@mini ~]# if [ a = b -o b = b ]; then echo ok;else echo notok;fi
  242. ok
  243. 其中-a是and;-o是or
  244. [root@mini ~]# if [[ a = b && b = b ]]; then echo ok;else echo notok;fi
  245. notok
  246. [root@mini ~]# if [[ a = b || b = b ]]; then echo ok;else echo notok;fi
  247. ok
  248. 3/ 常用判断运算符
  249. 字符串比较:
  250. = 字符串是否相等
  251. != 字符串是否不相等
  252. -z 字符串长度为0返回true
  253. -n 字符串长度不为0返回true
  254. if [ 'aa' = 'bb' ]; then echo ok; else echo notok;fi
  255. if [ -n "aa" ]; then echo ok; else echo notok;fi
  256. if [ -z "" ]; then echo ok; else echo notok;fi
  257. 整数比较:
  258. -lt 小于
  259. -le 小于等于
  260. -eq 等于
  261. -gt 大于
  262. -ge 大于等于
  263. -ne 不等于
  264. 还可以用转义的数学符号 \<
  265. 文件判断:
  266. -d 是否为目录
  267. if [ -d /bin ]; then echo ok; else echo notok;fi
  268. -f 是否为文件
  269. if [ -f /bin/ls ]; then echo ok; else echo notok;fi
  270. -e 是否存在
  271. if [ -e /bin/ls ]; then echo ok; else echo notok;fi
  272. while语法(用的少)
  273. 1、方式一
  274. while expression
  275. do
  276. command
  277. done
  278. 2、方式二
  279. i=1
  280. while ((i<=3))
  281. do
  282. echo $i
  283. let i++
  284. done
  285. case语法(用的多)
  286. case $1 in
  287. start)
  288. echo "starting"
  289. ;;
  290. stop)
  291. echo "stoping"
  292. ;;
  293. *)
  294. echo "Usage: {start|stop}"
  295. esac
  296. for语法
  297. 1、方式一
  298. for N in 1 2 a
  299. do
  300. echo $N
  301. done
  302. for N in 1 2 3; do echo $N; done
  303. for N in {1..3}; do echo $N; done
  304. 2、方式二
  305. for ((i = 0; i <= 5; i++))
  306. do
  307. echo "welcome $i times"
  308. done
  309. for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done
  310. 函数使用
  311. 2.6.1 函数定义
  312. #!/bin/sh
  313. # func1.sh
  314. #hello
  315. hello() ## 函数定义
  316. {
  317. echo "Hello there today's date is `date +%Y-%m-%d`"
  318. return 2 ###返回值其实是状态码,只能在[0-255]范围内
  319. }
  320. echo "now going to the function hello"
  321. hello
  322. echo $? #获取函数的return值(即:返回上一条命令执行的后的值。true返回0,false返回1)
  323. echo "back from the function"
  324. 函数调用:
  325. function hello()
  326. 或 function hello
  327. 或 hello
  328. 注意:
  329. 1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译
  330. 2.函数返回值,只能通过$? 系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
  331. 脚本调试:
  332. sh -vx helloWorld.sh
  333. 或者在脚本中增加set -x
  334. 2.6.2 函数参数
  335. #!/bin/bash
  336. # fun1.sh
  337. funWithParam(){
  338. echo "第一个参数为 $1 !"
  339. echo "第二个参数为 $2 !"
  340. echo "第十个参数为 $10 !"
  341. echo "第十个参数为 ${10} !"
  342. echo "第十一个参数为 ${11} !"
  343. echo "参数总数有 $# 个!"
  344. echo "作为一个字符串输出所有参数 $* !"
  345. }
  346. funWithParam 1 2 3 4 5 6 7 8 9 34 73
  347. 注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
  348. 2.6.3 函数返回值
  349. #!/bin/bash
  350. # fun2.sh
  351. funWithReturn(){
  352. echo "这个函数会对输入的两个数字进行相加运算..."
  353. echo "输入第一个数字: "
  354. read aNum
  355. echo "输入第二个数字: "
  356. read anotherNum
  357. echo "两个数字分别为 $aNum 和 $anotherNum !"
  358. return $(($aNum+$anotherNum))
  359. }
  360. funWithReturn
  361. echo "输入的两个数字之和为 $? !"
  362. 2.6.4 跨脚本调用函数
  363. 假如上述的脚本文件fun2.sh保存在此路径: /root/fun2.sh
  364. 则可在脚本fun_other.sh中调用脚本fun2.sh中的函数
  365. #!/bin/bash
  366. # fun_other.sh
  367. . /root/fun1.sh ## 注: . 和 / 之间有空格
  368. # 或者 source /root/fun1.sh
  369. funWithParam 11 22 33 44 55 66 77 88 99 100 101

发表评论

表情:
评论列表 (有 0 条评论,151人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LinuxLinux基本指令

    > `Linux`是一个开源的操作系统(更高效、更稳定、更安全) > > 登录:`ssh root@IP地址` 概念、定位 > 使计算机更好用!这是操作系统的根本要义

    相关 Vue指令语法

     除了插值语法(解析标签体的内容)之外,还有指令语法(解析标签:包括标签属性,标签体内容,绑定事件等等),这两者一起构成了Vue的模板语法 >  指令语法  标签中的属性,