linux脚本怎么写',ubuntu怎么写脚本的

1. ubuntu编写一个shell脚本,要求:删除目录及子目录下2019.02.14之前

Linux下使用Shell脚本删除一个目录下的所有子目录和文件

#!/bin/sh

#FileName:deleteDir.sh

#Function:Linux下使用Shell脚本删除一个目录下的所有子目录和文件

#Version:V0.1

#Author:Sunrier

#Date:2012-08-01

CURRPATH=$PWD

#DESTPATH为删除的目标目录

DESTPATH="/home/Sunrier/Trash"

#isNullDir函数判断进入的目录下是否存在下级子目录或者文件

#存在返回1,不存在返回0

isNullDir()

{

local NewCurrentPath=$PWD

local NewDirName=$1

cd $NewDirName

local NewFileList=`ls 2>/dev/null`

# -n string : 如果字符串不为空,则结果为真

if [ -n "$NewFileList" ]

then

echo "目录$NewDirName下列表信息为$NewFileList"

cd $NewCurrentPath

return 1

else

echo "目录$NewDirName为空目录"

cd $NewCurrentPath

return 0

fi

}

2. linux启动脚本如何写

inittab是很多linux版本的启动脚本。

Linux在完成核内引导以后,就开始运行init程序,它的进程号是1,是所有其他进程的起点。init需要读取/etc/inittab,该文件告诉init在它的每个运行级别上需要做哪些事情。

init共定义了七个运行级(run level),分别是什么?# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # - 关闭计算机,安全关闭电源 # 1 - Single user mode # - 进入单用户维护模式,卸下除root以外的所有文件系统并杀死所有用户进程 # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # - 多用户模式,无网络连接 # 3 - Full multiuser mode # - 多用户模式,并以文本方式作为登陆方式 # 4 - unused # 5 - X11 # - 多用户模式,并以图形方式作为登陆方式 # 6 - reboot (Do NOT set initdefault to this) # - 停止linux系统,并按照/etc/inittab默认的登记项重新引导系统通常在/etc/inittab的开头就定义了系统默认启动到的级别,如:id:3:initdefault:id - 用来定义缺省的init运行的级别3 - 默认的级别为此 (Full multiuser mode)initdefault - 是关键字,表示默认的级别。系统管理员可以通过修改这条语句方便地修改默认的运行级别。

在机器引导时,init从运行级0开始,一级一级往上运行到在/etc/inittab中所设置的默认运行级别。为了完成在每一对相邻运行级别之间的过渡,init运行在/etc/inittab中为这种过渡而说明的一些操作。

当机器关闭时,以相反的顺序执行同样的处理过程。既然之前指定的默认运行级别是3,那么init就要执行/etc/rc.d/rc3.d目录中的脚本。

/etc/rc.d/rcN.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

我们可以看到/etc/rc.d/rc5.d/中的 rc启动脚本通常是K或S开头的链接文件,对于以以S开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。下面讲下几个特殊的linux.对于arch:以我机子上的arch linux为例,inittab如下:[[email protected] etc]$ cat inittab ## /etc/inittab## Runlevels:# 0 Halt# 1(S) Single-user# 2 Not used# 3 Multi-user# 4 Not used# 5 X11# 6 Reboot## Only one of the following two lines can be uncommented!# Boot to console#id:3:initdefault:# Boot to X11id:5:initdefault:rc::sysinit:/etc/rc.sysinit //第1个启动脚本rs:S1:wait:/etc/rc.single //当以S和1运行级启动时,rs为代号,wait为行为描述,下同rm:2345:wait:/etc/rc.multi //当以2-5运行级启动时rh:06:wait:/etc/rc.shutdown //6运行级启动时su:S:wait:/sbin/sulogin -p //S运行级启动时# -8 options fixes umlauts problem on loginc1:2345:respawn:/sbin/agetty -8 38400 tty1 linuxc2:2345:respawn:/sbin/agetty -8 38400 tty2 linuxc3:2345:respawn:/sbin/agetty -8 38400 tty3 linuxc4:2345:respawn:/sbin/agetty -8 38400 tty4 linuxc5:2345:respawn:/sbin/agetty -8 38400 tty5 linuxc6:2345:respawn:/sbin/agetty -8 38400 tty6 linuxca::ctrlaltdel:/sbin/shutdown -t3 -r now# Example lines for starting a login managerx:5:respawn:/usr/bin/xdm -nodaemon#x:5:respawn:/usr/sbin/gdm -nodaemon#x:5:respawn:/usr/bin/kdm -nodaemon#x:5:respawn:/usr/bin/slim >& /dev/null# End of file由id:5:initdefault:看出默认运行级别为5。

arch并没有提供rcN.d之类的目录,但是我们由这一句rm:2345:wait:/etc/rc.multi看到会执行/etc/rc.multi/rc.multi脚本。内容如下:[[email protected] etc]$ cat rc.multi #!/bin/bash## /etc/rc.multi#. /etc/rc.conf. /etc/rc.d/functions# Load sysctl variables if sysctl.conf is present[ -r /etc/sysctl.conf ] && /sbin/sysctl -q -p &>/dev/null# Start daemonsfor daemon in "${DAEMONS[@]}"; do if [ "$daemon" = "${daemon#!}" ]; then if [ "$daemon" = "${daemon#@}" ]; then start_daemon $daemon else start_daemon_bkgd ${daemon:1} fi fidoneif [ -x /etc/rc.local ]; then /etc/rc.localfi# vim: set ts=2 noet:会执行/etc/rc.conf和/etc/rc.d/functions,前者是arch用户最熟悉的,后者看看代码很长,也是一些启动设置。

上面我们看到会执行/etc/rc.local,这个也是一个启动脚本,用户常加入自定义脚本在里面。/etc/rc.conf里面的服务启动都是相应在/etc/rc.d/目录下当脚本,arch上并没有链接到/etc/init.d目录下,因为arch根本没有/etc/init.d这个目录对于ubuntu:参考文档ubuntu中inittab不见了,而变成了upstart机制,启动脚本改成了/etc/event.d/rc-default,内容如下:start on stopped rcSscript runlevel --reboot || true if grep -q -w -- "-s/|single/|S" /proc/cmdline; then telinit S elif [ -r /etc/inittab ]; then RL="$(sed -n -e "/^id:[0-9]*:initdefault:/{s/^id://;s/:.*//;p}" /。

3. linux启动脚本如何写

第1种:直接写入 rc.local 文件 如:echo " ls -la >/tmp/a.txt " >>/etc/rc.local(这种是直接把命令写入启动文件rc.local中,当然也可以引申为 将命令直接写入到sh文件,再加上执行权限,将这个全路径文件名写入rc.local也一样) 第2种:先使用runlevel 查看正常启动所运行的级别上,再在/etc/rc*.d(星号代表运行级别,各系统可能存在差异)的目录中新加入(不是写入)启动文件以S开头的文件。

这种方法稍稍复杂点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值