lnmp_auto:自动化安装lnmp环境脚本

朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了,但是还没有使用过“一键安装”的自动化脚本,去网上有搜索出来,但是运行的时候发现用root运行别人的脚本还是真危险的事情,于是明白这不是个轮子,而是个井,每个程序员有必要自己挖一口的了。所以想着自己写个自动化安装lnmp的脚本lnmp_auto。

源代码在github上:https://github.com/jianfengye/lnmp_auto

本文记录下写的过程中遇到的几个shell问题:

如何判断当前用户是否是root用户

if [ $UID -ne 0 ]
thenecho "Error: You must be root to run the script!"exit 1
fi

如何判断机器是64位还是32位

有很多种方法,但是如果要输出最简单明了的估计是这种方法了:

MACHINE_LONG_BIT=$(getconf LONG_BIT)

如何判断一个组存在,并且这个组内有某个用户

if grep -q mysql /etc/group
thenecho "mysql group exists"
elsegroupadd mysql
fiif groups mysql | grep -q -E ' mysql(\s|$)'
thenecho "mysql user exists"
elseuseradd -r -g mysql mysql
fi

如何将一个目录内的所有文件批量软连接到另外一个目录内

     FILELIST=`ls $BINARY_MYSQL_PATH/bin`for FILENAME in $FILELISTdoln -sn --force $BINARY_MYSQL_PATH/bin/$FILENAME /bin/$FILENAMEdone

在sed中要替换的正则包含/符号和变量$XXX怎么办

我们一般使用sed "s/XXXX/OOOO/" file来做替换

但是如果XXXX中包含/并且还有可能包含变量的话,就需要将/符号替换成:了

sed -i "s:/usr/local/mysql/data:${BINARY_MYSQL_PATH}/data:" mysql.server.init

如何注释一段代码

在shell中注释一行代码是#,那么注释一段代码就需要使用:<<BLOCK

:<<BLOCK
BINARY_MYSQL_PATH="$ROOT_PATH"/binary/mysql
if [ ! -d "$BINARY_MYSQL_PATH" ]
thenmkdir -p $BINARY_MYSQL_PATH
fi
BLOCK

shell如何进行交互

使用read命令将输出记录到一个变量中

checkinstall="n"
read -p "Are you sure want to install php into service?(y/n):" checkinstall
if [ $checkinstall="y" ]
then
…
fi

如何关闭selinux

sed -i "s/enforcing/disabled/" /etc/selinux/config

这里的i参数就是在当前文件直接做替换,如果觉得不保险可以先做备份

如何获取运行shell的shell文件夹路径

这里不是获取当前的路径(当前路径直接使用pwd就可以获取),比如我在/home/yejianfeng,运行sh lnmp_auto/lnmp_auto.sh,如何获取到lnmp_auto.sh的文件夹路径/home/yejianfeng/lnmp_auto/

$(cd "$(dirname "$0")"; pwd) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编语言之寄存器(内存访问)

1、内存中字的存储 2、ds和【address】 CPU要读写一个内存单元的时候&#xff0c;必须先给出这个内存单元的地址&#xff0c;在8086CPU中&#xff0c;内存地址由段地址和偏移地址组成&#xff0c; 其中&#xff0c;段地址存放在段寄存器DS中&#xff0c;DS称作数据段寄存器。…

JS实现图片预加载

网站开发时经常需要在某个页面需要实现对大量图片的浏览&#xff0c;如果考虑流量的话&#xff0c;大可以像pconline一样每个页面只显示一张图片&#xff0c;让用户每看一张图片就需要重新下载一下整个页面。不过&#xff0c;在web2.0时代&#xff0c;更多人愿意用javascript来…

用sort()方法随机打乱数组

2019独角兽企业重金招聘Python工程师标准>>> 我们先看一下随机数组排序的示例&#xff0c;再来研究其中的原理。 随机数组排序示例 var numbers [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; numbers numbers.sort(function(…

Linux下部署Kubernetes+Kubesphere(一)Kubernetes基础

1.服务器规划为配置Kubesphere高可用集群&#xff0c;需要三台或三台以上机器作为Master节点&#xff0c;每台机器既可以作为Master也可以作为Worker节点。其中Master节点数量建议为单数。该示例中采用三台服务器&#xff0c;即作为Master节点也作为Worker节点&#xff0c;配置…

触发器及其应用实验报告总结_调机技巧总结: 先快后慢射胶法及其应用

戳我进入社区&#xff1a;注塑和模具人的网上家园先快后慢&#xff0c;也即先用一级快速射胶&#xff0c;射到某个设定的位置时&#xff0c;再起二级慢速射胶。这个二级起级点一般是设在射胶充型的后期&#xff0c;也即接近充型结束的位置。使用一级快速射胶&#xff0c;可以保…

汇编语言之寻址方式

&#xfeff;&#xfeff;1、内存单元和[bx]的描述 要完整地描述一个内存单元&#xff0c;需要两种信息&#xff1a;1.内存单元的地址&#xff1b;2.内存单元的长度&#xff08;即是字节单元还是字单元&#xff09;。 如&#xff1a;mov ax, [2a78] 表示将一个内存单元中的数…

命名空间的使用

namespace hunan\changsha class Person{ static $namewu_han; } namespace hunan\changsha 声明命名空间&#xff0c;它的作用包括方法&#xff0c;类名&#xff0c;常量&#xff0c;这三者都统称为元素 当在程序里使用元素的时候&#xff0c;默认在当前的命名空间里找该元素…

使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics

使用 dotnet-monitor 在 Kubernetes 中收集 .NET metricsIntrodotnet-monitor 是微软推出的一个帮助我们诊断和监控 .NET 应用程序的工具&#xff0c;在 Kubernetes 中我们可以让 dotnet-monitor 作为 sidecar 运行&#xff0c;无侵入地监控 .NET 应用&#xff0c;今天我们就来…

DOM 事件深入浅出(二)

在DOM事件深入浅出&#xff08;一&#xff09;中&#xff0c;我主要给大家讲解了不同DOM级别下的事件处理程序&#xff0c;同时介绍了事件冒泡和捕获的触发原理和方法。本文将继续介绍DOM事件中的知识点&#xff0c;主要侧重于DOM事件中Event对象的属性和方法。 那么什么是DOM事…

arcgis 分区 属性值_ArcGIS制图之Maplex自动点抽稀

制图工作中&#xff0c;大量密集点显示是最常遇到的问题。其特点是分布可能不均匀、数据点比较密集&#xff0c;容易造成空间上的重叠&#xff0c;影响制图美观。那么&#xff0c;如果美观而详细的显示制图呢&#xff1f;主要原理Maplex中对标注有很好的显示控制&#xff0c;一…

学术造假导致导师自杀,后将这段学术丑闻经历出书贩卖,一年收入上百万......

全世界只有3.14 % 的人关注了爆炸吧知识本文转自募格学术2020年2月11日&#xff0c;小保方晴子又被撤回了一篇研究论文。Tissue Engineering Part A撤稿给出的原因是&#xff1a;通过哈佛医学院正式调查后&#xff0c;无法确实其实验结果的准确性&#xff0c;尽管作者本人坚持已…

汇编语言之数据处理的2个基本问题

&#xfeff;&#xfeff;1、bx、si、di和bp Bx、si和di这3个寄存器我们已经学过了&#xff0c;现在进行一下总结&#xff0c;并学一下bp。 1&#xff1a;在8086CPU中&#xff0c;只有这4个寄存器可以用在[…]中来进行内存单元的寻址。比如&#xff0c;下面的指令都是正确 的…

js(jQuery)获取时间的方法及常用时间类

获取JavaScript 的时间使用内置的Date函数完成 var mydate new Date();mydate.getYear(); //获取当前年份(2位)mydate.getFullYear(); //获取完整的年份(4位,1970-????)mydate.getMonth(); //获取当前月份(0-11,0代表1月)mydate.getDate(); //获取当前日(1-31)mydate.getD…

phalcon: 缓存片段,文件缓存,memcache缓存

几种缓存&#xff0c;需要用到前端配置&#xff0c;加后端实例配合着用 片段缓存&#xff1a; public function indexAction(){//渲染页面$this->view->setTemplateAfter(common);//缓存片段 //前端配置$frontcache new \Phalcon\Cache\Frontend\Output(array(&q…

nvm用标准sata ahci码_能者多劳!让NVMe固态硬盘做系统盘的同时,加速SATA数据盘...

不知不觉当中&#xff0c;固态硬盘已经取代机械硬盘成为主流。越来越多的玩家已经淘汰机械盘&#xff0c;使用NVMeSATA的固态硬盘高低搭配。既然是高低搭配&#xff0c;就一定会有性能差距&#xff0c;是否能从NVMe固态硬盘中划分出一小部分空间来给SATA固态硬盘加速&#xff0…

天了噜!定义static字段还有顺序要求?

前言前段时间&#xff0c;发现一个bug&#xff0c;代码结构类似下面的示例。你能说出这段代码的正确返回结果吗&#xff1f;class Program {private static int a1 a2;private static int a2 Init();private static int Init(){return 123;}static void Main(string[] args){…

汇编语言之转移指令和原理

&#xfeff;&#xfeff;1、引言 可以修改IP&#xff0c;或同时修改CS和IP的指令统称为转移指令。概括地讲&#xff0c;转移指令就是可以控制CPU执行内存 中某处代码的指令。 8086CPU的转移行为有以下几类&#xff1a; 1. 同时修改CS和IP时&#xff0c;称为段间转移&#…

【高德地图开发2】---配置工程

1.从网站下载开发包并解压。 3D地图包解压后得到&#xff1a;3D地图显示包“Android_Map_2.x.x.jar ”和文件夹“ armeabi ”&#xff08;以 V2.2.0为例&#xff0c;含 - libamapv302.so 和 libmapv302ex.so 文件&#xff09;。2D地图包解压后得到&#xff1a;2D地图显示包“An…