linux脚本命令(linux 中如何执行脚本) | 您所在的位置:网站首页 › linux命令写进脚本执行 › linux脚本命令(linux 中如何执行脚本) |
本文目录linux 中如何执行脚本求助:LINUX常用SHELL命令linux 中如何执行脚本如何在 Linux 启动时自动执行命令或脚本linux写脚本,需要ls只显示前10个文件,怎么实现linux下shell脚本命令Linux 命令 & shell 脚本之01(cp & scp命令)linux中的shell脚本中输出文本内容到文件的命令是linux shell脚本执行命令详解运行linux脚本,遇到要按回车键,怎么让它自动应答,继续运行脚本linux 中如何执行脚本 “首先脚本需要有执行权限:chmod u x file.sh;执行脚本有三种方法:1. ./file.sh:特点:开启bash子进程来执行,也就是开启额外的进程来进行,不影响原进程的变量、配置等2. bash file.sh特点:和./file.sh相同3. source file.sh 或者 . file.sh 特点:在原bash进程中执行脚本。第三种方法主要用于在脚本中切换用户su、切换目录cd等命令。source 和 . 命令是相同的。你可以搜索 source补充,如何查看脚本运行是否开启了bash子进程vim file.sh写入#!/bin/bash;#echo $$命令会输出bash进程ID;echo $$;保存并赋予可执行权限chmod u x file.sh;在你的shell中输入,echo $$ 屏幕输出4176;./file.sh 屏幕输出3600;bash file.sh 屏幕输出3984;source file.sh 屏幕输出4176 和 你直接在shell中输出的一样,说明是在同一个bash进程,另外你是感兴趣的话可以看下刘遄老师写的《Linux就该这么学》作为入门的书籍,觉得不错的话采纳下哦“ 求助:LINUX常用SHELL命令分类: 电脑/网络 》》 操作系统/系统故障 问题描述: 欢迎大家的投稿!!!!!!! 解析: LINUX常用命令 1 文件与目录操作命令 1.1文件内容查询命令 grep、fgrep、egrep CODE: 选项: QUOTE: -E 每个模式作为一个扩展的正则表达式对待 -F 每个模式作为一组固定字符串对待,而不作为正则表达式 -i 比较时不区分大小写 -l 显示首次匹配匹配串所在的文件名并用换行符将其分开。当在文件中多次出现匹配串时,不重复显示次文件名; -x 只显示整行严格匹配的行 1.2文件查找命令 find、locate 语法: CODE:find 起始目录 寻找条件 操作 以名称和文件属性查找 QUOTE: -name‘字串‘ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、。 -lname‘字串‘ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、。 -gid n 查找属于ID号为n的用户组的所有文件。 -uid n 查找属于ID号为n的用户的所有文件。 -group‘字串‘ 查找属于用户组名为所给字串的所有的文件。 -user‘字串‘ 查找属于用户名为所给字串的所有的文件。 -path‘字串‘ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、。 -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711、644。 -type x 查找类型为 x的文件, 语法:locate 相关字 1.3文件的复制、删除和移动命令 文件复制命令 CODE: 源文件或目录 目标文件或目录 选项: QUOTE: - a 通常在拷贝目录时使用 -d 拷贝时保留连接 -f 删除已经存在的目标文件而不提示 -i 和f选项相反 -p 此时cp除复制源文件内容外,还将其修改的时间和访问权限也复制到新文件中 -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下的所有的子目录和文件,此时目标文件必须为一个目录名; -l 不作拷贝,只是链接文件 文件移动命令 CODE: 源文件或目录 目标文件或目录 QUOTE: -i 交互式操作 -f 禁止交互式操作 文件删除命令 CODE: 文件… QUOTE: -f 忽略不存在的文件,从不给出提示 -r 指示rm将参数中列出的全部目录和子目录均递归地删除 -i 进行交互式删除 1.4文件链接命令 CODE: 目标 目录 QUOTE: 选项: - s 建立符号链接 1.5目录的创建和删除命令 mkdir 创建一个目录 语法: CODE: dirname 选项: - m 对新建目录设置存取权限 -p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。 rmdir 删除空目录 语法: CODE: dirname QUOTE: 选项: - p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。 1.6改变工作目录,显示目录内容命令 1、改变工作目录: CODE: 2、显示当前工作的目录的绝对路径: CODE:pwd 3、显示目录内容: CODE: QUOTE: 选项: - a 显示指定目录下所有子目录与文件,包括隐藏文件; -c 按照文件的修改时间排序 -C 分成多列显示各项 -d 如果参数是目录,只显示其名称而不显示其下的个文件 -F 在目录名后面标记“/”,可执行文件后面标记“*”,符号链接后面标记“@”,管道(或FIFO)后面标记“|”,socket文件后面标记“=”。 -l 以长格式来显示文件的详细信息 -L 若指定的名称为一个符号链接,则显示链接所指向的文件 -t 显示时按修改时间而不是名字排序 -u 显示时按文件上次存取的时间而不是名字排序 4、改变文件或目录的访问权限命令 CODE: 文件名? QUOTE: Who选项: - u表示用户,即文件和目录的所有者 -g表示同组用户 -o(other)表示其他用户 -a (all)表示所有用户 QUOTE: 操作符号: + 添加某个权限 - 取消某个权限 = 赋予给定权限并取消其他所有的权限(如果有的话) QUOTE: mode 选项: - r 可读 -w 可写 -x 可执行 CODE: group filename? 改变目录或文件所属的组 CODE: 用户或组 文件 1.7备份与压缩命令 1、tar命令 为文件和目录创建档案 语法: CODE: 文件或者目录 QUOTE: u 主选项 c 创建新的档案文件。如果用户想备份一个目录或是一些文件,则选此项 r 把要存档的文件追加到档案文件的末尾 t 列出档案文件的内容,查看已经备份了哪些文件; u 更新文件 x 从档案文件中释放文件; u 辅助选项 b 该选项为磁带机设定的,其后跟一位数字,用来说明区块的大小,系统预设值为20 f 使用档案文件或设备,这个选项通常是必选的 k 保存已经存在的文件。例如把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖; m 在还原文件时,把所有文件的修改时间设定为现在; M 创建多卷的档案文件,以便在几个磁盘中存放; v 详细报告tar处理的文件信息 w 每一步都要求确认 z 用gzip来压缩/解压缩文件 2、gzip命令 压缩/解压缩命令 语法: CODE: 压缩(解压缩)的文件名 QUOTE: 选项: -c 将输出写到标准输出上,并保留原有文件 -d 将压缩文件解压 -l 显示每个压缩文件的详细信息 -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩 -t 测试、检查压缩文件是否完整 -v 对每一个压缩和解压的文件,显示文件名和压缩比 3、unzip 命令 用MS windows下的压缩软件winzip压缩的文件在linux系统下展开 语法: CODE: 压缩文件名.zip QUOTE: 选项: -x 文件列表 解压缩文件,但不包括指定的file文件 -v 查看压缩文件目录,但不解压 -t 测试文件有无损坏 ,但不解压 -d 目录 将压缩文件解到指定目录下 -z 只显示压缩文件的注解 -n 不覆盖已经存在的文件 -o 覆盖已经存在的文件且不要求用户确认 -j 不重建文档的目录结构,把所有文件解压到同一目录下 1.8在LINUX环境下运行DOS命令 linux系统提供了一组称为mtools的可移植工具,可以让用户轻松地从标准的DOS软盘上读写文件和目录。 QUOTE: mcd 目录名 改变MSDOS目录 mcopy 源文件 目标文件 在MSDOS和UNIX之间复制文件; mdel 目录名 删除MSDOS目录 mdir 目录名 显示MSDOS目录 mformat 驱动器号 在低级格式化的软盘上创建MSDOS文件系统 rnlabel 驱动器号 产生MSDOS卷标 mmd 目录名 删除MSDOS目录 mren 源文件 目标文件 重新命名已存在的MSDOS文件 mtype 文件名 显示MSDOS文件的内容 2 设备管理命令 1)linux采用下面的形式定义一个IDE硬盘: CODE: 2)SCSI硬盘使用同样的机制表示: CODE: 3)对于一般的LINUX分区,可以用mkfs将其格式化并生成文件系统,命令如下: CODE:mk2fs –c 《partition》; 《size》; 4)装载文件系统: CODE: partition mountpiont 其中, QUOTE: -t为指定装载文件系统的类型; -o指定一些选项,如只读ro,可读可写rw等等; partition定义分区名称; mountpiont定义文件系统被装载的目录名称。 5)装载CD-ROM文件系统: CODE:mount –t iso9660 –r /dev/cdrom /mnt/cdrom 6)装载软驱文件系统: CODE:mount –t msdos –rw /dev/fd0 /dev/mnt/floppy 7)卸载文件系统 CODE:umount /mnt/cdrom 磁带设备的安装要注意以下几点: QUOTE: 1、 首先要选择一个唯一的SCSI ID号,然后再将设备链接到适当的位置 2、 选择驱动程序。 3、 生成设备文件。SCSI磁带设备的主要设备号是9,次要设备号是0。设备文件名通常是/dev/nrst0(不支持回绕的磁带设备)或/dev/nst0(支持回绕的磁带设备) 用 ls /dev/*rst* 检查磁带设备文件是否存在,如果不存在,用 mknod –m 666 /dev/nrst0 c 9 9 mknod –m 666 /dev/rst0 c 9 0 生成 4、 可以对块长度、缓存、磁带密度等参数进行一些设置,例如 mt setblk 20 将块长度指定为20 mt setblk 0 指定块程度没有限制 5、 通过检查系统的启动信息可以确定系统是否识别了新的磁带设备。用dmesg命令,查看是否有以下类似的信息: aha274x:target 4now synchronous at 4.4Mb/s Vendor:TANDBERG Model:TDC 3800 Rev: =05: Type: Sequential-Access ANSI SCSI revision: 02 Detected scsi tape st0 at scsi0, id4, lun0 Scsi : detected 1 SCSI tape 1 SCSI crom 1 SCSI disk total 3 软件包管理命令 3.1软件安装的步骤 在LINUX系统上安装软件的步骤有: QUOTE: 1、 查找所要安装软件的源文件 2、 把源文件解开放到一个目录中,命令如下: tar zxvf 《源文件名》; 3、 针对本操作系统配置源文件。可以是make文件或其他文件,也可能是运行该软件自带的自动配置工具,如./configure 4、 make源文件,通常是运行make命令,即执行 make 5、 安装二进制文件和其他支撑文件,运行命令: make install 6、 最后,完成所有其他必须的配置 3.2软件包管理命令 QUOTE: rpm –ivh 《软件包》; 安装指定的软件包,并在安装过程中用#表示安装的进度 rpm –Uvh 《软件包》; 更新一个已经存在的或还没安装好的软件包,并删除所有该软件包的旧版本。 rpm –e 卸载一个rpm软件包 rpm –qa 查看系统中已经安装的软件包 rpm –q 《软件包》; 查看系统中某个软件包的版本号; rpm –qlp 《软件包》; 列出某个软件包中的所有文件 rpm –qf 《软件包》; 找出一个文件属于哪个软件包 4 LINUX系统常用命令 4.1 与系统管理有关的命令 Wall (Write All) QUOTE: 对全部已 登录的用户发送信息,用户可以先反要发送的信息写好存入一个文件中,然后输入: # wall 《 FileName 例:Wall ‘Thank you !’ Write 向某一用户发送信息。 Write xxq hello 输入Ctrl+C组合即可终止 Shutdown命令 CODE: QUOTE: -k 并不真正关机,而只是发出警告信息给所有的用户。 -r 关机后立即重新启动。 -h 关机后不重新启动。 -f 快速关机,启动时跳过fsck。 -n快速关机,不经过init程序。 -c 取消一个已经运行的shutdown 例:系统马上关机:Shutdown –h now Free命令 查看当前系统内存的使用情况, CODE: CODE:-b 以字节为单位显示。 -k 以K字节为单位显示。 -m 以M字节为单位显示。 Uptime QUOTE: 显示系统已经运行了多长的时间:现在时间、系统已经运行的时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。 4.2与用户有关的命令 Passwd命令 设置、更换用户口令。 CODE: Su 使一个普通的用户具有超级用户的权利,离开可用EXIT命令。 4.3其它命令 Echo命令 在显示器上显示一段文字,一般起到一个提示的作用。 CODE: 字符串 Cal命令 显示某年某月的日历。 CODE: QUOTE: 选项的含义: -j 显示也给定月中的每一天是一年中的和几天(从1月1日算起)。 -y 显示也整年的日历。 Date命令 date命令的功能是显示和设置系统日期和时间。 4.4磁盘管理 磁盘空间管理 df命令 检查文件系统的磁盘空间占用局部。 CODE: QUOTE: -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。 -k 以K字节为单位显示。 -i 显示i节点信息,而不是磁盘块。 - t 显示各指定类型的文件系统的磁盘空间使用情况。 -x 列出不是某一指定类型文件系统的磁盘窨使用情况(与t相反)。 -T 显示文件系统类型。 du命令 du的英文原意为disk usage,含义为显示磁盘空间的使用情况。功能是统计目录(或文件)所占磁盘空间的大小。 CODE: QUOTE: -s 对每人Names 参数只给也占用的数据块总数。 -a 递归地显示指定目录中各文件用子孙目录中的各文件占用的数据块总数。 -b 以字节为单位列也磁盘窨使用情部(缺省以K字节为单位) -k 以1024字节为单位列也磁盘空间使用情况。 -c 最后再加上一个总计(系统缺省) -l 计算所有的文件大小,对硬链接文件,则计算多次。 -x 跳过在不同文件系统上的目录不予统计。 dd命令 把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法: CODE:dd 〔选项〕 QUOTE: if =输入文件(或设备名称)。 of =输出文件(或设备名称)。 ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。 skip = blocks 跳过读入缓冲区开头的ibs*blocks块。 obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。 bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。 cbs = bytes 一次转换bytes字节。 count = blocks 只拷贝输入的blocks块。 conv = ASCII 把EBCDIC码转换为ASCII码。 conv = ebcdic 把ASCII码转换为EBCDIC码。 conv = ibm 把ASCII码转换为alternate EBCDIC码。 conv = blick 把变动位转换成固定字符。 conv = ublock 把固定们转换成变动位 conv = ucase 把字母由小写变为大写。 conv = lcase 把字母由大写变为小写。 conv = notrunc 不截短输出文件。 conv = swab 交换每一对输入字节。 conv = noerror 出错时不停止处理。 conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。 fdformat命令 低级格式化软盘。 CODE: device QUOTE: -n 格式化后不做检验 4.5常用的网络命令 FTP命令 Tel命令。 Netstat命令 QUOTE: -a 显示所有的scoket,包括正在监听和。 -c 每隔1秒就重新显示一遍,直到用户中断它。 -i 显示所有网络接口的信息,格式同”ifconfig –e” -n 以网络IP地址代替名称,显示也网络连接情形。 -r 显示核心路由表,格式同”route –e:。 -t 显示TCP协议的连接情况。 -u 显示UDP协议的连接情况。 -v 显示正在进行的工作。 nslookup命令。 finger命令,功能是查询用户的信息。 ping命令。 (用户和组的管理可以使用工具:TurboUserCfg或是XturboUserCfg。) 4.6有关进程的命令。 进程和启动 CODE:时间 at –c 作业 AT命令启动的进程系统只执行一次。 batch 在系统负载较小时,资源比较空闲时执行。 cron命令 按一定的时间间隔执行命令。 crontab命令 用于安装、删除或列出用于驱支cron后台进程的表格。 进程查看 CODE:who命令。 w命令 是一个比who命令更强大的命令 w – -h 不显示标题。 -u 当列出当前进程和CPU时间时忽略用户名。 -s 使用短模式。不显示登录时间JCPU和PCPU时间。 -f 切换显示FROM项,也就是远程主机名项。 -V 显示版本信息。 user 只显示指定用户的情况。 ps命令。 -e 显示所有进程。 -f 全格式 -h 不显示标题。 -l 长格式。 -w 宽输出。 a 显示终端上所有进程,包括其他用户的进程。 r 只显示正在运行的进程。 x 显示没有控制终端的进程。 top 命令 动态显示系统当前的进程和其他状况。 5系统的启动过程。 5.1初始启动 在PC机启动时,BIOS从指定的启动设备中读入“主引导记录”(MBR)。MBR的格式是: 地址偏移量 内容 大小 +00 h 可执行的代码(启动模块) 可能变化 +1BE h 第一分区表项 16字节 +1CE h 第二分区表项 16字节 +1DE h 第三分区表项 16字节 +1EE h 第四分区表项 16字节 +1FE h 可执行的标记(AA55 h) 2字节 启动模块包含足以装入操作系统的代码,或者是第二步的加载代码的位置。启动模块需要使用BIOS调用来从磁盘装入数据,而这些中断调用,如INT 13h等,限制了最大磁盘柱面号为1023。这也就是说启动模块需要加载的一切内容,如初始内存磁盘、内核、启动的时间信息等,必须存放在1024个柱面以内。 在MBR中只有四个分区表项,每个表项的格式如下: 地址偏移 内容 大小 +00h 分区状态:00代表非启动分区,80h代表启动分区 1字节 +01h 分区的起始位置 磁头 1字节 +02h 分区的起始位置 柱面和扇区 1字节 +04h 分区的类型 1字节 +05h 分区的结束位置 磁头 1字节 +06h 分区的结束位置 柱面和扇区 1字节 +08h 在主引导区和本分区的第一个扇区间的扇区数目 4字节 +0Ch 分区内的扇区数目 4字节 5.2 Linux的启动过程 1启动的命令行参数 在Linux启动时,它处理所有传递给它的命令行参数。这可以影响Linux的运行方式。命令行参数包括: QUOTE: mem=xxxM:定Linux可以使用的内存大小。这在用户的计算机系统有超过64MB的内存时才需要。因为从前的主板只对第一个64MB内存进行缓存,使用超过64MB的内存会使整个计算机的性能下降,所有内存均按无缓存的速度运行。 single:使Linux按单用户方式启动,缺省方式是多用户方式。 root=/dev/xxx:指定Linux要安装为根文件系统的设备。 init=《file》;:指定作为初始化进程的文件。 initrd=《dev》;:指定作为初始内存磁盘的设备。 ro:指定根文件系统为只读。 rw:指定根文件系统为可读可写。 2 Init进程 在内核初始化自身和找到的硬件设备后,在后台启动进程init(/ *** in/init),init进程号1运行。 在UNIX世界中有许多启动过程的版本,一些是基于系统V,一些是基于BSD。大多数Linux版本使用系统V的实现方法,在这里描述的就是这样。 init是由文件/etc/inittab内容和功能控制的,随启动模式是单用户或多用户而不同。 QUOTE: 单用户模式:init进程忽略/etc/inittab文件,在执行少数几个脚本程序后调用/dev/console shell。这样,用户就可以有了一个shell,而且可以执行一定限度的任务。 多用户模式:init进程把系统带入/etc/inittab文件指定的运行级别。Init通过标准的Linux方法进入一个指定的进行级别。 3.进行级别 Linux与其他UNIX操作系统一样,可以任何时刻处于任何一个运行级别。这些运行级别提供的功能不同,为主要是由于其运行的服务方程序(后台daemon)的不同造成的。Linux共有6种运行级别。 QUOTE: 0:关闭计算机或终止计算机运行,这个级别就是系统停止运行。 1:单用户启动级别,系统只有一个用户,就是root,该用户在控制台登录。 2:多用户运行级别,但无网络功能。在这个运行级别,网络功能没有启动,但是系统允许多个用户登录,可以通过虚拟控制台或串行线路。 3:多用户模式,有网络功能。在这个运行级别,所有标准网络服务均被启动。 4:目前没有实现。 5:X11运行级别,在这个运行级别,X服务器软件运行,提供图形界面的登录方式。 6:系统重新启动。 查询当前运行级别:runlevel; 4在启动过程中运行的脚本 在init进程运行时,它负责查看缺省的运行级别,并进入该运行级别。这是通过运行在/etc/rc.d/rcX.d目录下的脚本程序来实现的,其中X代表运行的级别,即一个运行级别对应一个目录。不同的字母开头的文件有不同的作用。其中: 以K开头的脚本程序是系统离开某个运行级别时执行的,作用是停止某种服务。当系统从某个支持级别变为其他级别时,首先要进行原运行级别所对应的所有K程序。 以S开头的脚本程序是系统进入某个运行级别时所执行的,作用是启动某种服务。当系统改变为某个运行级别时,就要运行新运行级别所对应的所有S程序。 5增加启动脚本程序 用户可能有一些特定的硬件设备要初始化,或需要在系统启动时初始化一些其他应用程序,用户可以增加自己的初始化脚本程序来完成这些工作。通常步骤是: 复制一个已经存在的脚本,这样可以得到一个通用的框架格式。 修改这个脚本,以完成自己的需求,要注意使程序可以处理启动和关闭的参数,尽管可能关闭处理什么也不需要干。 把这个肢本拷贝到/etc/rc.d/init.d目录下,命名为”serv”。 按下面的方法在相应的目录下建立运行控制链接: CODE:ln –s ../init.d/serv/etc/rc.d/rc3.d/s99 serv 进行测试。 6 LILO和其他的启动模块 要启动Linux,启动模块是必须的。一般用于Linux的启动模块是LILO,LILO用自己的主引导区代替一般的主引导区。LILO可以通过修改/etc/lilo.conf文件内容来进行配置,对引导区内容的更新通过lilo命令来完成。 下面给也了一个装有DOS,TurboLinux3.4.0和RedHat 5.2系统的计算机的lilo.conf文件。在例子中的数字标号是用户加上去并要在文中详细解释的。 CODE:# more /etc/lilo.conf boot=dev/had map=/boot/map instll/boot/boot.b prompt #表示启动盘是/dev/had,这是主IDE硬盘。 timeout=50 #表示等待用户输入的时间是50秒。 default=TL3.4 other=dev/hda1 #表示如果在上述的时间内没有输入,缺省的启动系统是TL3.4,即TurboLinux 3.4.0 label=dos table=dev/had #表示如果在LILO提示用户输入启动系统时,用户按了《Tab》;键,各个系统将以label的内容显示出来,供用户选择。 image=/mnt/tl3.4/boot/vmlinuz label=TL3.4 root=/dev/hda3 read-only TurboLinux的启动文件,/mnt/tl3.4/boot/vmlinuz被确定,根文件系统在/dev/hda3,根文件系统是只读方式的。 CODE:image=/mnt/rh5.2/boot/vmlinuz-2.0.36-0.7 label=RH5.2 root=/dev/hda4 read-only RedHat的启动文件,/mnt/rh5.2/boot/vmlinuz-2.0,36-0.7被确定,根文件系统在/dev/hda4,根文件系统可读写。 linux 中如何执行脚本首先脚本需要有执行权限chmod u+x file.sh执行脚本有三种方法:1. ./file.sh 特点:开启bash子进程来执行,也就是开启额外的进程来进行,不影响原进程的变量、配置等2. bash file.sh 特点:和./file.sh相同3. source file.sh 或者 . file.sh 特点:在原bash进程中执行脚本。第三种方法主要用于在脚本中切换用户su、切换目录cd等命令。source 和 . 命令是相同的。你可以搜索 source 补充,如何查看脚本运行是否开启了bash子进程1.vimfile.sh2.写入#!/bin/bash#echo$$命令会输出bash进程idecho$$3.保存并赋予可执行权限chmodu+xfile.sh4.在你的shell中输入,echo$$ 屏幕输出41765../file.sh 屏幕输出36006.bashfile.sh屏幕输出39847.sourcefile.sh 屏幕输出4176和你直接在shell中输出的一样,说明是在同一个bash进程 如何在 Linux 启动时自动执行命令或脚本Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。有用户想要在Linux启动时候自动执行命令脚本,应该怎么设置呢?这篇文章主要介绍了详解如何在 Linux 启动时自动执行命令或脚本,主要有两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
方法步骤 在启动时执行 Linux 脚本 有两种传统的方法可以实现在启动时执行命令或脚本: 方法 #1 - 使用 cron 任务 除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot 指令。这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径。 然而,这种方法需要注意两点: a) cron 守护进程必须处于运行状态(通常情况下都会运行),同时 b) 脚本或 crontab 文件必须包含需要的环境变量(如果有的话,参考 StackOverflow 获取更多详细内容)。 方法 #2 - 使用 /etc/rc.d/rc.local 这个方法对于 systemd-based 发行版 Linux 同样有效。不过,使用这个方法,需要授予 /etc/rc.d/rc.local 文件执行权限: # chmod +x /etc/rc.d/rc.local 然后在这个文件底部添加脚本。 下图说明如何分别使用 cron 任务和 rc.local 运行两个示例脚本(/home/gacanepa/script1.sh 和 /home/gacanepa/script2.sh)。 script1.sh: #!/bin/bash DATE=$(date +’%F %H:%M:%S’) DIR=/home/gacanepa echo “Current date and time: $DATE“ 》 $DIR/file1.txt script2.sh: #!/bin/bash SITE=“Tecmint.com“ DIR=/home/gacanepa echo “$SITE rocks... add us to your bookmarks.“ 》 $DIR/file2.txt *启动时执行 Linux 脚本 * 记住,一定要提前给两个示例脚本授予执行权限: $ chmod +x /home/gacanepa/script1.sh $ chmod +x /home/gacanepa/script2.sh 在登录或注销时执行 Linux 脚本 要在登录或注销时执行脚本,分别需要使用 ~.bash_profile 和 ~.bash_logout 文件。多数情况下,后者需要手动创建。在每个文件的底部,添加调用脚本代码,如前面例中所示,就可以实现这个功能。 补充:Linux基本命令 1.ls命令: 格式::ls 功能:对于目录,列出该目录下的所有子目录与文件;对于文件,列出文件名以及其他信息。 常用选项: -a :列出目录下的所有文件,包括以 . 开头的隐含文件。 -d :将目录像文件一样显示,而不是显示其他文件。 -i :输出文件的i节点的索引信息。 -k :以k字节的形式表示文件的大小。 -l :列出文件的详细信息。 -n :用数字的UID,GID代替名称。 -F : 在每个文件名后面附上一个字符以说明该文件的类型,“*”表示可执行的普通文 件;“/”表示目录;“@”表示符号链接;“l”表示FIFOS;“=”表示套接字。 2.cd命令 格式:cd 常用选项: cd .. 返回上一级目录。 cd ../.. 将当前目录向上移动两级。 cd - 返回最近访问目录。 3.pwd命令 格式: pwd 功能:显示出当前工作目录的绝对路径。 相关阅读:Linux主要特性 完全兼容POSIX1.0标准 这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。 多用户、多任务 Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。 良好的界面 Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。 支持多种平台 linux写脚本,需要ls只显示前10个文件,怎么实现ls只显示前10个文件命令语句:ls -l | head -n 10。 ls 指令是Linux下最常用的指令之一,将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及所要求的和标志一起的其它信息。 扩展资料 当 ls 命令显示目录内容时,它不显示名称以 .(点)开头的文件项,除非使用了 -a 或者 -A 标志。如果命令由 root 用户执行,它缺省使用 -A 标志。 通过指定 -C 或 -x 标志以多列列出各项。当向 tty 输出时,-C 标志是缺省格式。如果文件或目录名太长,ls 命令显示单列输出。 通过指定 -m 标志可以以逗号分隔系列列出项。 linux下shell脚本命令Shell脚本基本知识概述:shell其实是内核与用户之间的一个接口, shell脚本如果有一系列经常使用的linux命令,你可以把它们存储在一个文件肿。shenll可以读取这个文件,并执行其中的命令。这样的文件成为脚本文件。执行shell脚本 要创建一个shell脚本,你要使用任何器比如vi在文本文件中编写他。 为了使用bash shell赖执行脚本magic,其命令是:bash magic或者./magic echo命令: echo “this is an example of the echo command!” 屏幕上就会回显“this is an example of the echo command!”#符号 用于在shell脚本肿可以包含注解入口 echo “hello” #this is a comment line. this would not produce any output! echo “world!”第二行是一个注解的例子。它将被shell忽略,而且不产生任何消息变量: 可以在任何时间通过简单的赋值来创建。 语法: 《variable name》-《value》 Linux 中的所有变量都被当作字符串引用变量: $符号用于引用一个变量的内容 variable1 = ${variable2}读入值给变量 在执行shell脚本时,shell还允许用户直接从键盘读入一个值给变量,还可以使用read命令来作。 $read fname本地和全局shell变量 局部变量 当引用shell时,只有创建它的shell能够知道变量的存在 全局变量 称为子shell shell中创建的变量局部于创建它的shell,除非使用export命令特别指出是全局的。 环境变量: 通过改变这些变量的值,用户能够定制此环境 一些环境变量的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL HOME变量 Linux系统中的每个用户都有一个相关的称作HOME的目录 当一个用户登录后,进入相应的HOME的目录 $ echo $HOME PATH变量 包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。 PS1变量 PS1(Prompt String 1)变量包含了shell提示符,$符号 $ PS1 = “HELLO》” HELLO》PS2变量 是为第二个提示符设置值的环境变量 LOGNAME变量 包含用户的注册名字 $echo “${LOGNAME}” SHLVL 变量 该变量包含当前工作的shell level SHELL变量 环境变量存储了用户缺省的shell env命令 可用来查看所有的已移出的环境变量表和它们各自的值!命令替换 在单个命令行中使用多个命令的另外一种方法(非Pipes)是通过命令替换 echo “the data is `date`” expr命令 用于求之算术表达式。该命令的输出被送到标准输出 $ expr 4 + 5 将在屏幕上显示9 算术展开: 你可以在$((…)) 中括一个表达式,用下面的命令来计算它的值; $((expression)) example1编写一个shell脚本用于计算呼叫中心未应答的询问的数量。该脚本应该接受一天那所报告的询问的总数和应答的询问的数量,以便计算未应答的询问的数量。 所有未应答的询问总数=所有询问的总数-应答的询问的数量《!----》※※※※※※※※※※※※※※※※※※※※※※※条件执行 test和 求值表达式,并返回true(0)或false() 数值测试:-eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真 if构造 Linux shell提供了循环和判定的构造,可以在shell脚本中使用 算术测试 结合if构造,它可以用于测试变量的数字值 串测试 test命令也可以用于字符串 = 等于则为真 != 不相等则为真 -z 字符串 长度为零则为真 -n 字符串 长度不为零则为真 文件测试 test命令也可以用于检查文件的状态 -e 文件存在则为真 -r 文件存在并且可读则为真 -w 文件存在并且可写则为真 -x 文件存在并且可执行则为真 -s 文件存在并且至少有一个字符则为真 -d 文件存在并且为目录则为真 -f 文件存在并且为普通文件则为真 -c 文件存在并且为字符型文件则为真 -b 文件存在并且为块特殊文件则为真 -a并且 -o或者 !非 exit命令 用于终止shell脚本的执行并返回到$提示符下case 。。。esac shell脚本中使用的这个构造依据变量的值而执行一组特定指令 当变量的值和其中的一个值匹配的时候,就执行写在该值下的一组命令。 example3迭代 while构造 while 《条件》 do 《命令(s)》 done 只有条件为真的时候,才能执行do与done之间的命令 until构造 until循环构造的求值模式于while循环相反 until循环将继续执行直到求值的条件为真的时候 for构造 for variable_name in 《list_of_values》 do … donefor循环取一列值作为输入并对循环中每个值执行循环 break和contineu命令 同其他语言中的用法 example4控制进程的执行 请求后台处理 用于请求后台进程的符号是 (&) $ wc tempfile & 2082 $ vi newfile 检查后台进程 ps(进程状态)命令为每个当前的活动的每个进程产生一行入口。 终止后台进程 可用kill,如下所示 kill 278 查看完成一个命令所花的时间 你可以使用time命令来查看一个命令从开始到结束所花的时间 time fine /etc –name “passwd” 2》 /dev/null /dev/null表明忽略错误信息。管道的介绍 垂直条(|)是管道字符 它只是shell:“|”前面命令的输出作为“|”之后命令的输入发送ls –l | more用管道组合命令,功能强大 Linux 命令 & shell 脚本之01(cp & scp命令)Linux cp命令主要用于复制文件或目录 1.语法 2.参数说明 3.案例 3.1. cp 命令基本用法 3.2 复制目录 3.3 复制软链接文件 3.4. 保留源文件属性复制 3.5. “-l“ 和 “-s“ 选项 4.cat 6.linux快速删除大量文件 linux中的shell脚本中输出文本内容到文件的命令是您想问的是linux中的shell脚本中输出文本内容到文件的命令是什么吗?shell变量调出命令。linux中的shell脚本有多种命令格式,其中输出文本内容到文件的命令包括但不限于shell文本命令调出、shell变量取值等。Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于Linux桌面1991年10月5日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。 linux shell脚本执行命令详解在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助! linux shell脚本执行 linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。 linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本: /data/shell/hello.sh linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本: cd /data/shell bash hello.sh 或 cd /data/shell sh hello.sh 注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊。 linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本: cd /data/shell . hello.sh 或 cd /data/shell source hello.sh 前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。 运行linux脚本,遇到要按回车键,怎么让它自动应答,继续运行脚本1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。 2、其次,在linux命令行中输入:cp -f word.txt /word.txt。 3、键盘按“回车键”运行shell指令,此时会看到cp命令直接执行不提示用户手动判断覆盖了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |