centossh腳本
1. 關於centos的命令和sh腳本的問題
source命令執行腳本,意味著在當前shell執行。對當前環境變數的值有影響。
sh命令執行腳本,會在新建shell中執行。不會改變當前環境變數的值。
2. centos虛擬機下怎麼啟動.sh腳本
首先腳本要有執行的許可權,chmod +x 腳本,執行可以用./腳本,或者bash 腳本
3. CentOS 通用腳本處理jar包程序
不同應用只需要修改AppName參數內容即可實現jar包的啟動,停止,重啟
啟動:./newapp.sh start
停止:./newapp.sh stop
重啟:./newapp.sh restart
shell腳本newapp.sh管理jar包內容如下(不同應用只需要修改AppName參數內容和APP_HOME參數路徑,以及相應的日誌文件的路徑):
#!/bin/sh
# ./ry.sh start 啟動 stop 停止 restart 重啟 status 狀態
AppName=ruoyi-admin.jar
# JVM參數
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
if [ "$1" = "" ];
then
echo -e "33[0;31m 未輸入操作名 33[0m 33[0;34m {start|stop|restart|status} 33[0m"
exit 1
fi
if [ "$AppName" = "" ];
then
echo -e "33[0;31m 未輸入應用名 33[0m"
exit 1
fi
function start
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
nohup java $JVM_OPTS -jar $AppName > /data/ruoyi/nohup 2>&1 &
echo "Start $AppName success..."
fi
}
function stop
{
echo "Stop $AppName"
PID=""
query{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
else
echo "$AppName already stopped."
fi
}
function restart
{
stop
sleep 2
start
}
function status
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
esac
4. CentOS7 設置開機自啟動腳本
兩種實現方式:
方法一: (rc.local)
1、因為在 centos7 中 /etc/rc.d/rc.local 的許可權被降低了,所以需要賦予其可執行權
2、賦予腳本可執行許可權
假設 /usr/local/sca/start.sh 是你的腳本路徑,給予執行許可權
3、打開 /etc/rc.d/rc.local 文件,在末尾增加如下內容
方法二: (chkconfig)
1、將腳本移動到 /etc/rc.d/init.d 目錄下
2、增加腳本的可執行許可權
3、添加腳本到開機自動啟動項目中
chkconfig 啟動腳本規范 在腳本開頭加入下面內容:
注意:不添加以上內容的話添加啟動項時會提示service myservice does not support chkconfig
Linux啟動優先順序:
5. centos系統然後用sh腳本定時修改txt文件內容
腳本為
#!/bin/bash
#Filename:script.sh
YE=`date+%Y|awk'{printgensub(/^0/,"","")}'`
MON=`date+%m|awk'{printgensub(/^0/,"","")}'`
DA=`date+%d|awk'{printgensub(/^0/,"","")}'`
echo"blockCheckRealTime$YE/$MON/$DA,01:00:01==1">/tmp/file
Cron任務
00***bash/tmp/script.sh
6. centos 系統下sh腳本無法執行的問題處理
新的系統遇到奇怪的問題,看門狗腳本無法正常運行,提示如下錯誤:
relocation error: /lib/libpthread.so.0: symbol h_errno, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference。
進入/usr/lib64目錄下,發現軟連接 libpthread.so.0-->libpthread-2.17.so.
於是刪除libpthread.so.0, 設想從自己運行程序的當前目錄拷貝一個libpthread.so.0 覆蓋。結果無法執行cp拷貝命令,提示缺少libpthread.so.0. 於是恢復原來的libpthread.so.0, 然後在執行cp強制覆蓋命令,結果導致了伺服器重啟。
最後,將自己運行程序的libpthread.so.0 重命名為libpthread.so.1, 拷貝到/usr/lib64目錄下。
然後新建軟連接 ln -s libpthread.so.1 libpthread.so.0 .
此時在執行sh看門狗腳本,此時提示libresolv.so.2與GLIBC不兼容。
從新從自己運行的程序路徑下的libresolv.so.2重命名為libresolv.so.3. 將libresolv.so.3拷貝到/usr/lib64路徑下。
刪除之前軟連接libresolv.so.2。 重新建立軟連接 ln -s libresolv.so.3 libresolv.so.2
現在再執行腳本,腳本運行正常。
7. centos根據php的curl請求post過來的參數執行對應的sh腳本
你得有個動態HTTP伺服器,ThinkPHP、Spring、tomcat+servlet、Django、Flask甚至是最簡單的Python SimpleHTTPServer或者自己用C語言實現一個,不管怎麼實現的,運行你的伺服器監聽本地某個埠,然後對到來的請求編寫相應的業務處理代碼,解析請求參數,執行對應操作例如運行某個腳本。然後將響應(Response)返回給客戶端。
如果你對後端開發一竅不通,你需要先學習HTTP協議原理和工作過程,以及至少一款後端框架的使用。
8. centos c++怎麼調用shell腳本
我想你時指在C++代碼里調用shell,方法如下(在centos操作系統下):
使用system系統函數
使用fork(包括exec函數族)
使用popen
具體的內容可以在網上查查這些函數的用法,只是起腳本的話,使用system(「path/xxx.sh」);就可以了
9. centos系統然後用Cron+sh腳本定時修改txt文件內容
echo
"block
CheckRealTime
$YE/$MON/$DA,01:00:01
==
1"
>
/tmp/file
這句話的意思是:把你需要的內容追加在/tmp/file文件後面。
0
0
*
*
*
bash
/tmp/script.sh
這個crontab執行的是/tmp/script.sh文件
按照他的意思是把這個腳本寫到/tmp/script.sh,這個腳本會修改/tmp/file文件,直接把內容追加在文件末。
10. centos 7 shell 腳本怎樣運行
一、root許可權編輯/etc/rc.d/rc.local
Shell代碼
su
cd /etc/rc.d/
vi rc.local
二、在這個文件加上你要執行的腳本,全部內容如下:
Shell代碼
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
mount //192.168.0.3/data2-1 /mnt/data2-1 -o username=un,password=123
mount //192.168.0.3/data2-2 /mnt/data2-2 -o username=un,password=123
mount //192.168.0.3/data2-3 /mnt/data2-3 -o username=un,password=123
mount //192.168.0.3/data2-4 /mnt/data2-4 -o username=un,password=123
mount //192.168.0.3/data2-5 /mnt/data2-4 -o username=un,password=123
提示:這里的做法很不成熟,希望不要這樣,最好自己寫個腳本文件在這里來調用,結構更清晰,但是要注意到是把要執行的命令作為一個參數傳遞給su。
另外復習一個VI編輯命令-拷貝
yy
p