1、删除文档的第一行
sed -i ‘1d’
2、删除文档的最后一行
sed -i ‘$d’
3、在文档指定行中增加一行
例如文档如下:
echo “1”;
echo “2”;
echo “4”;
echo “5”;
想要在echo “2”;后面加上一条echo “3”;可以用如下命令
sed -i ‘/echo “2”;/aecho “3”;’
之所以用分号,是因为文本中本来就有。也就是说分号不是必须的!
抽象出来就是: sed -i ‘/* /a*’
4、删除文件中的一行
sed -i ‘3d’
5、删除文件中包含某个关键字开头的所有行
sed -i ‘/^QWQ/d’
6、删除文件中包含某个关键字的所有行
sed -i ‘/QWQ/d’
CentOS7 可以在SystemD管理服务Service方式实现服务的自启动
SystemD即为System Daemon,是linux下的一种init软件,开发目标是提供
更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,
同时达到降低Shell的系统开销的效果。
这里假设需要启动
# /usr/share/autostartup/foobar.sh |
# /usr/share/autostartup/foobar.sh
STEP1.创建SystemD管理服务使用的.service文件
/usr/share/autostartup/foobar.service |
/usr/share/autostartup/foobar.service
以下是测试service文件,.service的具体编写,参考systemd相关文档
[Unit]
Description=foobar
Documentation=http://www.doc.com/doc.html
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/foobar
ExecStart=/usr/share/autostartup/foobar.sh
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=foobar
User=foobar
Group=foobar
Environment=
[Install]
WantedBy=multi-user.target |
[Unit]
Description=foobar
Documentation=http://www.doc.com/doc.html
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/foobar
ExecStart=/usr/share/autostartup/foobar.sh
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=foobar
User=foobar
Group=foobar
Environment=
[Install]
WantedBy=multi-user.target
Read more…
CentOS6 可以在rc.local中增加启动shell脚本实现开启自启动
这里假设需要启动
/usr/share/autostartup/demo-service.sh |
/usr/share/autostartup/demo-service.sh
STEP1. 将需要开启启动的脚本设置为标记为可执行文件
chmod +x /usr/share/autostartup/demo-service.sh |
chmod +x /usr/share/autostartup/demo-service.sh
STEP2. 执行如下命令将/etc/rc.d/rc.local文件标记为可执行文件
chmod +x /etc/rc.d/rc.local |
chmod +x /etc/rc.d/rc.local
在CentOS7 中,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行在自己的脚本是不能起动一些服务的。
将需要执行的脚本写入到 /etc/rc.d/rc.local
echo “/usr/share/autostartup/demo-service.sh” >> /etc/rc.d/rc.local |
echo “/usr/share/autostartup/demo-service.sh” >> /etc/rc.d/rc.local
很多时候,部署运行环境的用户和实际运行的用户是不同的,
当因为环境限制,当时碰到以下场景的时候,就比较麻烦了,需要编写一个脚本来实现运行。
1.不能使用su和sudo时
2.用户没有shell不支持login时,比如nobody,服务用户
3.使用Docker等容器时
4.使用SSH远程执行命令,但是不能使用登陆用户
实现前提
1.需要运行用户的用户名和用户分组以及密码
2.需要运行用户的PUID和PGID
使用前请修改代码中实际运行的用户名,且用户存在
Read more…
如题 CentOS一键编译安装 NodeJS脚本,使用NodeJS源代码编译,适用于CentOS和Debian,
默认安装的Nodejs版本已经老掉牙了
脚本支持选择node的版本和prefix
两个编译变量
NODE_VERSION=v8.11.3
NODE_PREFIX=/usr/local
使用了系统vCPU数量来控制NPROC数量,支持各种虚拟机的情况
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)
对于物理机编译安装,建议按实际CPU数量*单个CPU核心数量进行参数设置
另外使用国内的taobao作为NPM的第一来源镜像。
#!/bin/bash
##############################################################################
# Build develop enviroment for running npm and nodejs
#
# version="1.0.0"
# node="v8"
# os="CentOS v7.4"
# user=“dev”
# description="Node v8 compiled from source running on CentOS v7.4"
##############################################################################
##############################################################################
# If is root
##############################################################################
if [ "$(whoami)" != 'root' ]; then
echo "install need root user"
exit
fi
##############################################################################
# Export enviroment variant
##############################################################################
export TERM=xterm
export NLS_LANG=American_America.AL32UTF8
export LANG=C # C.UTF-8
export LANGUAGE=C # C.UTF-8
export LC_ALL=C # C.UTF-8
export TIMEZONE=Asia/Shanghai
##############################################################################
# Build variant
##############################################################################
NODE_VERSION=v8.11.3
NODE_PREFIX=/usr/local
##############################################################################
# Setup build enviroment
##############################################################################
yum -y update
yum -y install \
ca-certificates \
gcc \
gcc-c++ \
gnupg \
libgcc \
libstdc++ \
kernel-headers \
openssl \
openssl-devel \
mercurial \
subversion \
git
##############################################################################
# Install Node & NPM
##############################################################################
# Download and validate the NodeJs source
for key in \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
56730D5401028683275BD23C23EFEFE93C4CFFFE \
; do \
gpg --keyserver pgp.mit.edu --recv-keys "$key"|| \
gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \
done
mkdir /node_src
cd /node_src
curl -o node-${NODE_VERSION}.tar.gz -sSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz
curl -o SHASUMS256.txt.asc -sSL https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc
gpg --verify SHASUMS256.txt.asc
grep node-${NODE_VERSION}.tar.gz SHASUMS256.txt.asc | sha256sum -c -
# Compile and install
cd /node_src
tar -zxf node-${NODE_VERSION}.tar.gz
cd node-${NODE_VERSION}
./configure --prefix=${NODE_PREFIX}
#./configure
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)
make -j${NPROC}
make install
# Set PATH enviroment variant
export PATH=${PATH}:${NODE_PREFIX}/bin
# Add the environment variable to /etc/profile
echo "export PATH=${PATH}:${NODE_PREFIX}/bin" >> /etc/profile
##############################################################################
# Install Package use NPM
##############################################################################
npm config set unsafe-perm true \
npm config set strict-ssl false \
npm config set registry https://registry.npm.taobao.org
# npm config set proxy http://[email protected]:xxxx
# npm config set https-proxy=http://[email protected]:xxxx
# Install node packages
npm install -g \
gulp-cli \
grunt-cli \
markdown-styles \
yarn
##############################################################################
# Setup users
##############################################################################
groupadd dev
useradd -s /bin/bash -g dev dev
echo "dev:password" | chpasswd
##############################################################################
# Clean up
##############################################################################
find ${NODE_PREFIX}/lib/node_modules/npm -name test -o -name .bin -type d | xargs rm -rf
rm -rf \
/node_src \
/tmp/* \
/var/cache/yum/* \
${NODE_PREFIX}/lib/node_modules/npm/man \
${NODE_PREFIX}/lib/node_modules/npm/doc \
${NODE_PREFIX}/lib/node_modules/npm/html |
#!/bin/bash
##############################################################################
# Build develop enviroment for running npm and nodejs
#
# version="1.0.0"
# node="v8"
# os="CentOS v7.4"
# user=“dev”
# description="Node v8 compiled from source running on CentOS v7.4"
##############################################################################
##############################################################################
# If is root
##############################################################################
if [ "$(whoami)" != 'root' ]; then
echo "install need root user"
exit
fi
##############################################################################
# Export enviroment variant
##############################################################################
export TERM=xterm
export NLS_LANG=American_America.AL32UTF8
export LANG=C # C.UTF-8
export LANGUAGE=C # C.UTF-8
export LC_ALL=C # C.UTF-8
export TIMEZONE=Asia/Shanghai
##############################################################################
# Build variant
##############################################################################
NODE_VERSION=v8.11.3
NODE_PREFIX=/usr/local
##############################################################################
# Setup build enviroment
##############################################################################
yum -y update
yum -y install \
ca-certificates \
gcc \
gcc-c++ \
gnupg \
libgcc \
libstdc++ \
kernel-headers \
openssl \
openssl-devel \
mercurial \
subversion \
git
##############################################################################
# Install Node & NPM
##############################################################################
# Download and validate the NodeJs source
for key in \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
56730D5401028683275BD23C23EFEFE93C4CFFFE \
; do \
gpg --keyserver pgp.mit.edu --recv-keys "$key"|| \
gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \
done
mkdir /node_src
cd /node_src
curl -o node-${NODE_VERSION}.tar.gz -sSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz
curl -o SHASUMS256.txt.asc -sSL https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc
gpg --verify SHASUMS256.txt.asc
grep node-${NODE_VERSION}.tar.gz SHASUMS256.txt.asc | sha256sum -c -
# Compile and install
cd /node_src
tar -zxf node-${NODE_VERSION}.tar.gz
cd node-${NODE_VERSION}
./configure --prefix=${NODE_PREFIX}
#./configure
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)
make -j${NPROC}
make install
# Set PATH enviroment variant
export PATH=${PATH}:${NODE_PREFIX}/bin
# Add the environment variable to /etc/profile
echo "export PATH=${PATH}:${NODE_PREFIX}/bin" >> /etc/profile
##############################################################################
# Install Package use NPM
##############################################################################
npm config set unsafe-perm true \
npm config set strict-ssl false \
npm config set registry https://registry.npm.taobao.org
# npm config set proxy http://[email protected]:xxxx
# npm config set https-proxy=http://[email protected]:xxxx
# Install node packages
npm install -g \
gulp-cli \
grunt-cli \
markdown-styles \
yarn
##############################################################################
# Setup users
##############################################################################
groupadd dev
useradd -s /bin/bash -g dev dev
echo "dev:password" | chpasswd
##############################################################################
# Clean up
##############################################################################
find ${NODE_PREFIX}/lib/node_modules/npm -name test -o -name .bin -type d | xargs rm -rf
rm -rf \
/node_src \
/tmp/* \
/var/cache/yum/* \
${NODE_PREFIX}/lib/node_modules/npm/man \
${NODE_PREFIX}/lib/node_modules/npm/doc \
${NODE_PREFIX}/lib/node_modules/npm/html
使用源代码编译方式安装Nginx的时候,肯定不如用用yum方式安装来得便捷,CentOS的系统服务需要自行配置。
自行配置Nginx为CentOS的系统服务时,出于进程管理考虑需要首先配置pid,出于安全考虑建议修改nginx的运行用户。
创建nginx.pid文件用于nginx主进程
touch /usr/local/nginx/logs/nginx.pid |
touch /usr/local/nginx/logs/nginx.pid
修改conf/nginx.conf,设置pid和user
user nobody;
pid logs/nginx.pid; |
user nobody;
pid logs/nginx.pid;
CentOS6.x配置nginx系统服务
创建一个/etc/init.d/nginx文件
touch /etc/init.d/nginx
chmod 755 /etc/init.d/nginx |
touch /etc/init.d/nginx
chmod 755 /etc/init.d/nginx
/etc/init.d/nginx文件中写入以下内容,
源文件取自yum方式安装后的文件,不过需要自己修改一下nginx的指向位置
nginx=”/usr/local/nginx/sbin/nginx”
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
Read more…
CentOS使用Catalina.sh 来管理Tomcat运行时,Catalina.sh run 之后产生的tomcat进程会无法使用 Catalina.sh stop -force关闭。如果Catalina.sh的默认内容来配置tomcat服务,/etc/init.d/tomcat stop 也将会失效
查看Catalina.sh文件后找到以下代码,原来需要stop的话,需要CATALINA_PID文件配合。
Catalina.sh 468行
if [ ! -z "$CATALINA_PID" ]; then
if [ -f "$CATALINA_PID" ]; then
if [ -s "$CATALINA_PID" ]; then
kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
if [ $? -gt 0 ]; then
echo "PID file found but no matching process was found. Stop aborted."
exit 1
fi
else
echo "PID file is empty and has been ignored."
fi
else
echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
exit 1
fi
fi |
if [ ! -z "$CATALINA_PID" ]; then
if [ -f "$CATALINA_PID" ]; then
if [ -s "$CATALINA_PID" ]; then
kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
if [ $? -gt 0 ]; then
echo "PID file found but no matching process was found. Stop aborted."
exit 1
fi
else
echo "PID file is empty and has been ignored."
fi
else
echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
exit 1
fi
fi
Read more…
Recent Comments