shell脚本

Shell: nohup守护进程化

三世轮回 提交于 2020-03-17 19:39:58
如果想在终端会话中启动shell脚本,然后让脚本一直以后台模式运行,直到其完成,即使你退出了终端会话,可以使用nohup命令实现。感觉 nohup就是将一个进程初始化为一个守护进程 。 nohup命令运行了另一个命令来阻断所有发送给该进程的SIGHUP信号。这会在退出终端会话时阻止进程退出。 由于nohup命令会从终端解除进程的关联,进程会丢掉到STDOUT和STDIN的链接,为了保存该命令产生的输出,nohup命令会自动将STDOUT和STDERR的消息重定向到一个名为nohup.out的文件中。 ************************************************************************************ 演示脚本如下,很简单: =============================================== 执行的命令格式为: nohup ./tmp.bash & ,输出会到nohup.out中 转载来自: http://blog.sina.com.cn/s/blog_ac9fdc0b0101pciy.html 来源: https://www.cnblogs.com/rain-blog/p/shell-daemon.html

shell内置变量

℡╲_俬逩灬. 提交于 2020-03-17 15:38:10
变量名 函数 $FUNCNAME 函数名称 $RANDOM 随机数 ${BASH_REMATCH[@]} 匹配正则表达式的列表 $0 脚本名称 $1~$n 脚本位置参数,10及以上表示为${10},shift进行偏移获取参数值 $@ 所有位置参数(列表) $* 所有位置参数(字符串) $# 位置参数的个数 $_ 上一条命令最后一个参数 $? 上条命令的返回值 $$ 脚本的PID $PPID 父进程ID $LINENO 脚本执行的行号 $PWD 当前目录 $SECONDS 脚本已经运行的时间(s) $TMOUT 超时退出时间(s) $UID 当前用户ID 来源: CSDN 作者: _Allen_Li 链接: https://blog.csdn.net/m0_37132242/article/details/104900539

shell脚本进阶&expect

孤街浪徒 提交于 2020-03-17 06:12:26
文章目录 10.1 写一个用户管理脚本 10.1.1 编写脚本 10.1.2 给执行权限 10.1.3 创建/root/userlist文件,并写入内容 10.1.4 测试 -h/-a/-m/-p 10.1.5 测试-d 10.1.6 测试-s 10.1.7 测试乱序以及多余参数 10.2 编写expect脚本:模拟登陆到ftp服务器并下载文件fstab(预先搭建ftp服务器并拷贝文件到/var/ftp目录) 10.2.1 安装vsftpd/ftp 10.2.2 开启服务 10.2.3 拷贝共享文件 10.2.4 关闭防火墙 10.2.5 编写脚本 10.2.6 测试 10.1 写一个用户管理脚本 脚本格式: ./script_file[ -h | -a | -d | -p PASSWORD | -m | -s SHELL ] USER_LIST_FILE -a 创建用户列表文件中的用户此选项必须接-m或-p连用 -d 删除用户列表文件中的用户 -p PASSWDORD 设置用户统一的密码 -m 使用默认密码rehat -s SHELL 指定用户的默认shell,如不指定默认/bin/bash -h 显示帮助信息 /root/userlist文件内容:每行一个用户名 注意事项: 脚本参数无序也能执行 脚本根据不同情况返回不同的状态码 参数错误能报错 短选项要支持连写

getopts 用法

醉酒当歌 提交于 2020-03-17 02:36:41
参考:https://blog.csdn.net/xluren/article/details/17489667 c语言里面有个getopt_long,可以获取 用户在命令下的参数 ,然后根据参数进行不同的提示或者不同的执行。 [hello@Git shell] $ bash test . sh - a hello this is - a the arg is ! hello [hello@Git shell] $ more test . sh #!/bin/bash while getopts "a:" opt ; do case $opt in a ) echo "this is -a the arg is ! $OPTARG " ; ; \? ) echo "Invalid option: - $OPTARG " ; ; esac done getopts的使用形式是:getopts option_string variable getopts一共有 两个参数 ,第一个是-a这样的选项,第二个参数是 hello这样的参数。 选项之间可以通过冒号:进行分隔,也可以直接相连接,:表示选项后面必须 带有参数 ,如果没有可以不加实际值进行传递 例如:getopts ahfvc: option表明选项a、h、f、v可以不加实际值进行传递,而选项c必须取值。使用选项取值时

Shell脚本之awk详解

烈酒焚心 提交于 2020-03-17 00:39:20
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

Shell 脚本面试问题大全

两盒软妹~` 提交于 2020-03-16 11:59:36
1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash cat $1 2) 如何在脚本中使用参数 ? 第一个参数 : 1 , 第 二 个 参 数 : 1,第二个参数:2 例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ./copy.sh file1.txt /tmp/ cat copy.sh #!/bin/bash cp $1 $2 3) 如何计算传递进来的参数 ? $# 4) 如何在脚本中获取脚本名称 ? $0 5) 如何检查之前的命令是否运行成功 ? $? 6) 如何获取文件的最后一行 ? tail -1 7) 如何获取文件的第一行 ? head -1 8) 如何获取一个文件每一行的第三个元素 ? awk '{print $3}' 9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素 awk '{ if ($1 == "FIND") print $2}' 10) 如何调试 bash 脚本 将 -xv 参数加到 #!/bin/bash 后 例子: #!/bin/bash –xv 11) 举例如何写一个函数 ? function example { echo "Hello world!" } 12) 如何向连接两个字符串 ? V1=

Shell 输入/输出重定向

左心房为你撑大大i 提交于 2020-03-16 08:05:01
大多数UNIX系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取 输入。 重定向命令列表如下: 命令 说明 command > file 将输出重定向到file. command < file 将输入重定向到file. n > file 将文件描述符为n的文件重定向到file. n >> file 将文件描述符为n的文件以追加的方式重定向到file. n>&m 将输出文件m和n合并. n<&m     将输入文件m和n合并. <<tag     将开始标记tag和结束标记tag之间的内容作为输入. 需要注意的是文件描述符0通常是标准输入(STDIN),1 是标准输出(STDOUT),2是标准错误输出(STDERR). 输出重定向 重定向一般通过在命令间插入特定的符号来实现,特别的,这些符号的语法如下所示: command > file1 上面这个命令执行command1然后将输出的内容存入file1. 注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符. 实例 执行下面的who命令,他将命令的完整的输出重定向在用户文件中(users): $ who > users 执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。

正则表达式和基础shell脚本

半城伤御伤魂 提交于 2020-03-15 17:46:45
1、/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户显示出来 getent passwd | grep -v "/sbin/nologin$" | cut -d: -f1 | nl | sort -nr 2、查出UID最大值的用户名、UID和shell类型 getent passwd | cut -d: -f1,3,7 | sort -t: -k2 -nr | head -1 3、统计当前连接本机的每隔远程主机IP的链接数,并从大到小排序 netstat -tan | grep "ESTABLISHED" | tr -s ' ' ':' | cut -d: -f6 | sort -nr | uniq -c 4、编写脚本creatuser.sh,实现如下功能,使用一个用户名作为参数,如果指定参数的用户存在,就显示用户已存在,否则添加之,并显示id号等信息 5、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等 来源: 51CTO 作者: wx5e42e8367825b 链接: https://blog.51cto.com/14688937/2478592

babun安装,整合到cmder

邮差的信 提交于 2020-03-15 08:32:49
babun Babun的特性: 预装了Cygwin以及许多的插件 默认的命令行安装工具,没有管理员权限要求。 预装了 pact工具,一个高级的包管理器,类似 apt-get或yum xTerm-256兼容的控制台 支持Http(s)的代理 面向插件的架构 配置了 git 和 shell 集成 oh-my-zsh 自动更新机制 集成右键菜单,在此打开Babun Cygwin Babun的核心就是Cygwin,不过它经过了配置。Cygwin是一个不错的工具,但是有很多问题需要花一些时间来配置它,让它易于应用。Babun做了一些配置,并且包含了很多重要的工具包,使得它非常易用。 Package manager Babun提供了一个包管理器,pact。类似于apt-get 或 yum。pact使得安装,搜索,更新和删除cygwin的工具包非常容易。pact --help快去看一下它怎么使用吧。 Shell Babun的shell经过了微调,这样可以提供更好的用户体验。有两个预配置的shell - bash 和 zsh,可以马上使用。zsh是默认的shell。Babun的shell具有如下的特征: 语法高亮 UNIX工具 软件开发工具 git改进 自定义的脚本和别名 还有一些其他功能 Console Mintty是在babun中用的控制台,它具有xterm-256模式的特征,良好字体简洁画面

[100]shell中exec解析

我是研究僧i 提交于 2020-03-15 08:17:12
参考:《linux命令、编辑器与shell编程》 《unix环境高级编程》 本地变量可以理解为 局部变量 , 参考:shell基础 参考 bash shell的命令分为两类:外部命令和内部命令。 内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec,source等等。 外部命令是通过系统调用或独立的程序实现的,如sed、awk等。 set: 命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。 env: 环境变量 fork: 完成linux系统调用 fork是linux的系统调用,用来创建子进程(child process)。 子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。 子进程与父进程唯一不同的地方在于pid(process id)。 本地变量和环境变量的本质区别 环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。 执行shell的2种方法 shell script: 有两种方法执行shell scripts, 一种是新产生一个shell,然后执行相应的shell scripts;执行脚本. 一种是在当前shell下执行,不再启用其他shell。