Shell脚本管理
sh test.sh、./test.sh与source test.sh、. test.sh执行命令的区别:sh是启用子shell执行而source或点是在当前窗口执行
export A=123:定义全局变量;unset A:删除定义的全局变量;source /etc/profile:在当前脚本中导入系统环境变量(包括$PATH)
全局变量配置文件执行顺序:
/etc/profile---->/etc/profile.d/---->~/.bash_profile---->~/.bashrc---->/etc/bashrc
脚本调试
[root@web01 scripts]# sh [-nvx] scripts.sh
说明: -n 不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示
-v 在执行脚本时,先将脚本的内容输出到屏幕上,然后执行脚本,如果有错误,也会给出错误提示
-x 将脚本的运行过程输出显示到屏幕上
使用set命令调试
参数:set -n:读命令但并不执行
set -v:显示读取的所有行
set -x:显示所有命令及参数
set -x开启调试,set+x关闭调试,set命令主要用来缩小调试范围。例:
[root@web01 scripts]# cat test3.sh
#!/bin/bash
set -x
if [ -f /var/log/iptables.log ];then
echo "iptables.log is ok"
set +x
else
echo "iptables.log is error"
fi
shell调试技巧
1、用dos2unix对脚本格式化(主要是windows转为unix格式)
2、执行脚本根据报错来调试时,要知道有时候报错不准确,多关联上下文查看
3、可通过sh -x scripts.sh命令调试整个脚本,且显示执行过程
4、set -x和set +x命令用于调试部份脚本执行过程(在脚本中设置)
5、通过echo命令确认脚本中的变量及相关内容,然后紧跟着使用exit退出脚本,不执行后面的程序,这种方式便于一步步跟踪脚本,对于逻辑错误比较好用,例:echo $var;exit 10
脚本嵌套
[root@web01 scripts]# cat bieming.sh
#!/bin/bash
alias qw="echo 123"
[root@web01 scripts]# cat new.sh
#!/bin/bash
source /server/scripts/bieming.sh
qw
| 用法 | 说明 |
| sh while1.sh & | 把脚本while1.sh放到后台执行 |
| ctl+c | 停止执行当前脚本或任务 |
| ctl+z | 正在前台执行的命令放到后台且暂停执行当前脚本或任务 |
| bg | 把当前脚本或任务放到后台执行,bg可以理解为background |
| fg | 把当前脚本或任务拿到前台执行,如果有有多个任务,可以使用fg加任务编号调出对应脚本任务,如fg 2,调出第二个脚本任务,fg可以理解为frontground |
| jobs | 查看当前执行的脚本或任务 |
| kill | 关闭执行的脚本任务,即以“kill 进程号”的形式关闭脚本,这个任务编号,可以通过jobs获得 |
2) 使用nohup /server/scripts/uptime.sh &命令,即使用nohup加&在后台运行脚本。
3) 利用screen保持会话,然后在执行命令或脚本。也就是使用screen保持当前会话状态。
更多有关进程管理的Linux相关命令如下。
kill、killall、pkill:杀掉进程。
ps:查看进程。
pstree:显示进程状态树。
top:显示进程。
renice:改变优先权。
nohup:用户退出系统之后继续工作。
pgrep:查找匹配条件的进程。
strace:跟踪一个进程的系统调用情况。
ltrace:跟踪进程调用库函数的情况。
Shell脚本管理的更多相关文章
- shell脚本(管理守护进程)
工作中常常会遇到处理消息队列的消费者进程,这样的进程是一个守护进程,即一个服务.服务通常写个shell脚本来管理,查询服务的status ,启动start 关闭stop 重启reload.最近在学 ...
- php管理nginx虚拟主机shell脚本
使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考 代码如下 复制代码 #!/usr/bin/php -q& ...
- 结合docker发布后端项目(基于gradle包管理)的shell脚本
结合docker发布后端项目(基于gradle包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理) 目前主流的 ...
- 结合docker发布前端项目(基于npm包管理)的shell脚本
结合docker发布前端项目(基于npm包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统 目前主流的前后端分离的项目中,常常在部署 ...
- 烂泥:学习tomcat之通过shell批量管理多个tomcat
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务是使用tomcat做web容器,为了更有效的利用服务器的性能,我们一般部署多个 ...
- Linux常用命令及shell脚本
一. 用户管理(添加用户.切换用户.删除用户) ~ ...
- shell脚本二
在shell脚本一 中,我讨论了shell脚本的语法规范,shell脚本的变量,以及shell脚本的测试语句. 仅仅懂得这些只能写简单的脚本,在简单的脚本中各条语句按顺序执行,从而实现自动化的管理,顺 ...
- shell 脚本关键字&符号
shell概念 "shell"既是一种解释型编程语言,也是一个这种编程语言的解释器的名字 shell是解释型语言,就是解释器会一条一条的翻译每一条语句并执行,对比之下,C语言是编译 ...
- shell脚本批量生成配置文件
如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦.因而想到了用shell脚本来批量生成配置文件和配置数据.下面这个脚本是为了批量生成nagios监控配置文件的一个shell脚本程序.其原 ...
随机推荐
- Python3 tkinter基础 Listbox for+insert 将list中元素导入listbox中
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- (转)Spring Cloud(一)
(二期)22.微服务框架spring cloud(一) [课程22]spirng c...简介.xmind54KB [课程22]spirng cl...架构.xmind0.5MB [课程22]负载均. ...
- [转]otunnel:一个和lcx差不多的端口转发的工具
这是一个采用Golang编写的和lcx差不多的端口转发的工具,用来突破内网环境 项目地址 ooclab/otunnel 下载地址(内涵各大平台) http://dl.ooclab.com/otunne ...
- 【安装】Matlab7.0简介及安装
一.简介 Matlab下载官方版是美国MathWorks公司出品的商业数学软件,Matlab7.0下载官方版用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MAT ...
- 完全卸载oraclean安装
完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务.2. 开始->程序->Oracle - OraHome ...
- asp.net core mvc 中在C# 代码中写 js 或html 文本
https://blog.csdn.net/orichisonic/article/details/62046621 使用<text>这个伪元素来强制Razor从编译模式返回到内容模式: ...
- P3727 曼哈顿计划E
点分治+SG函数还真是令人意外的组合啊 思路 这道题看到找一条满足条件的链,想到点分治 看到博弈,想到SG函数 然后就变成一道SG函数+点分治的题了 然后1e9的SG函数怎么搞?当然是打表了 然后各种 ...
- 论文笔记:Variational Capsules for Image Analysis and Synthesis
Variational Capsules for Image Analysis and Synthesis 2018-07-16 16:54:36 Paper: https://arxiv.org/ ...
- 【Hadoop 分布式部署 十:配置HDFS 的HA、启动HA中的各个守护进程】
官方参考 配置 地址 :http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabili ...
- Eclipse卸载插件SpringSoource-tool-suite
Eclipse卸载插件SpringSoource-tool-suite **系统环境:**Mac OS X 引子: 一直在纠结的一个问题,就是Eclipse开发java 项目在配置了InternalR ...