shell脚本学习与总结

2019-09-23 09:50:26王振洲

   改变文件的所属组,chown :oracle /tmp/sh/api.sh
同时,改变文件的所属用户和组,chown oracle:dba /tmp/sh/api.sh  那么api.sh的所属用户和组信息为:
-rwxrwxr-x 1 oracle dba 264 07-28 15:57 /tmp/sh/api.sh
15,id  命令,查看当前是哪个用户,以及哪个组的相当信息
16,groups 查看系统当前有多少个组,groups 用户名 如:groups oracle,查看用户所属组
17,getent group 组名  如:getent group dba  查看dba组中有哪些用户
18,创建一个用户并把它加入到指定组中 useradd wangcai -G root

19,当一个脚本需要以拥有者或组的用户执行时,需要用到suid,guid
文件设置了suid或guid时,如果该文件没有执行权限,那么设置suid或guid时就没有意思,会用大写"S"
表示。4代表suid,2代表guid
如:start-orcl.sh 例子,首先用chown改变文件所属用户,再用chmod改变文件suid和guid的权限
-rwxr-xr-x 1 root root  632 08-15 17:31 start-orcl.sh
chown oracle start-orcl.sh
-rwxr-xr-x 1 oracle root  632 08-15 17:31 start-orcl.sh
chmod 6751 start-orcl.sh
-rwsr-s--x 1 oracle root  632 08-15 17:31 start-orcl.sh

20,用指定的用户身份执行一个脚本 su - oracle -c "/tmp/sh/start-orcl.sh"
以oracle的身份执行start-orcl.sh这个脚本
21,创建快捷方式 ln -s /tmp/sh 1  创建快捷方式1指向/tmp/sh,访问1相当于访问/tmp/sh一样。
22,定时任务:
用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它。
基本用法:
crontab -l
列出当前的crontab任务
crontab -d
删除当前的crontab任务
crontab -e (solaris5.8上面是 crontab -r)
编辑一个crontab任务,ctrl_D结束
crontab filename
crontab的格式为:分 时 日 月 星期 命令(中间用空格隔开)。
    crontab文件的条目是从左边读起的,第一列是分,以此类推,最后一列是需要执行的命令。
    每一列称为crontab的一个域,在这些域中,可以用-来连接一个时间范围,例如星期一到星期五,可以用1-5来表示。
    单个时间点可以用,号分隔,比如星期一和星期四,那么可以表示为1,4。如果某个表示时间的域没有特别限制,可以用*号表示。每一个时间条目包含5个域,用空格隔开。
    比如我希望每天晚上21:30运行bin目录下的cleanup.sh文件,那么该命令就应该为:
    30 21 * * * /app/bin/cleanup.sh (注意:由于不需要限定日期、月份、星期,所以日期、月份和星期域用*号表示)
    比如我希望每月得1、10、20的00:00运行backup.sh文件,那么命令应该为:
    00 00 1,10,20 * *  /app/bin/backup.sh (注意:由于不需要限定月份和星期,所以月份和星期域用*号表示)