centos bash 脚本?centos编写shell脚本
这篇文章给大家聊聊关于centos bash 脚本,以及centos编写shell脚本对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
Centos下crontab指定执行用户
Centos下可以通过配置crontab来定时执行任务,执行体可以是一条系统命令或自己写的一个脚本,同时可以指派用户来执行。配置crontab有两种方法。
方法1、使用crontab命令,例如添加一个新的或编辑已有的,使用:
crontab-e
就可以进入配置文件。此时配置crontab的执行者是当前登入用户,如果当前用户是root,需要为其他用户配置,可以使用
crontab-e-u用户名
或
su用户名
crontab-e
这种方法有一个缺点,就是当前系统中配置的crontab不在一个配置文件中,让管理员不方便查询系统到底有多少个crontab。
方法2、直接在/etc/crontab文件中添加,不过需要是root身份。打开文件,应该会看到类似下面的信息
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# 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
#|||||
#***** user-name command to be executed
要添加新的crontab,只需要在文件最后增加即可。注意这里面需要指定用户名;而方法1中则不需要,如果指定了,它会认为是命令的一部分,从而可能导致crontab执行失败。
如果服务器都是有root来管理,建议添加crontab使用方法2,这样系统中的所有计划任务都在一起,一目了然。
shell 脚本中获取执行系统命令的输出结果
获取命令输出内容在shell脚本中至关重要。此过程主要用于根据命令执行结果决定后续操作。通常,开发者会寻找特定的关键字存在于命令输出中,以引导脚本执行不同的动作。
一种常用方法是使用反向单引号保存命令输出至变量,例如:
变量名=`命令`
在实际应用中,应留意一些细节。通过示例可以清晰展示:
在CentOS7中,使用`rpm-qa`命令查询rpm包是否安装。若未安装则进行安装操作。
创建脚本`test.sh`并执行:
$bash test.sh
输出结果:
command(rpm-qa) results are: zlib-1.2.7-13.el7.x86_64 package zlib has already installed.
此脚本功能正常。
对于iscsi-initiator软件包的安装情况,使用`iscsiadm`命令进行检查。与rpm命令不同,iscsiadm安装情况不能仅通过查询获得。
同样方式操作后,得到结果:
$ bash test.sh check command(iscsiadm) available results are: iscsiadm version 6.2.0.873-28 command iscsiadm could be used already.
这表明脚本运行无误,显示iscsiadm已可用。
遇到一个意外情况,`java version"1.8.0_73"`命令已安装,却未匹配到预期结果。执行`java-version`并检查`$?`为0,证实命令成功执行,却未获取到输出。原因可能是命令执行结果被重定向。
尝试将命令调整为`java-version 2>&1`,即可解决此问题并获得预期输出。
centos 7 shell 脚本怎样运行
一、root权限编辑/etc/rc.d/rc.local
Shell代码
su
cd/etc/rc.d/
vi rc.local
二、在这个文件加上你要执行的脚本,全部内容如下:
Shell代码
#!/bin/sh
#
# This script will be executed*after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch/var/lock/subsys/local
mount//192.168.0.3/data2-1/mnt/data2-1-o username=un,password=123
mount//192.168.0.3/data2-2/mnt/data2-2-o username=un,password=123
mount//192.168.0.3/data2-3/mnt/data2-3-o username=un,password=123
mount//192.168.0.3/data2-4/mnt/data2-4-o username=un,password=123
mount//192.168.0.3/data2-5/mnt/data2-4-o username=un,password=123
提示:这里的做法很不成熟,希望不要这样,最好自己写个脚本文件在这里来调用,结构更清晰,但是要注意到是把要执行的命令作为一个参数传递给su。
另外复习一个VI编辑命令-拷贝
yy
p