shell脚本nohup
你不应该放在profile,每个用户登录都会运行一次的。你确定hosts文件在mali目录下?不是mail?
另外你应该把这段代码写成脚本 在profile中以nohup 加后台的方式运行这个脚本。
比如 保存到/etc/init_kafka
然后在 profile中添加
nohup /etc/init_kafaka &
② 往shell脚本中传入参数
参数如下:
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ... $0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
③ 关于一个shell脚本的解释问题
cd `dirname $0` //首先cd到脚本所在目录
jar_file=$(ls *.jar) //然后列出jar格式的文件,并赋值给jar_file变量
mole_name=${jar_file%.*} //删掉最后一个 . 及其右边的字符串,即扩展名
now_date=$(date +%Y-%m-%d) //按格式取当前日期
// 下面这句是查找名为变量 mole_name 的进程,然后再找java进程。// 然后显示出第一行,第二个域。总的来说就是查找进程的PID
pid=$(ps -ef|grep ${mole_name}|grep java|head -n 1|awk '{print $2}');
echo kill ${mole_name} pid:${pid} // 结束上面找到进程
kill -9 $pid
// 设置JVM运行参数,最小内存386mb,最大内存512mb
JAVA_OPTS="-Xms386m -Xmx512m" 设置
// 如果没有logs目录则新建if [ ! -d "logs" ]; then
mkdir logs
fi
// 重新执行变量jar_file变量指向的文件,并输出日志到logs目录下的.out文件中,同时重新查找pid。
nohup java $JAVA_OPTS -jar ${jar_file} $params > logs/${mole_name}.out 2>&1 &
pid=$(ps -ef|grep ${mole_name}|grep java|head -n 1|awk '{print $2}');// 显示进程信息。
echo mole:${mole_name} startup finish pid:${pid}.
sleep 0.5
echo ${pid} > ${mole_name}.pid
综上所述,这段代码用于重启spring boot进程。
④ 求教sh脚本编写动态控制nohup日志文件。以下是相关需求
logrotate的自己男人的logrotate的
⑤ Shell怎么做守护脚本
写两个脚本,两个要互相调用并检查存不存在,如果要做守护的话实际上还要检查被拉起的程序
第一个脚本654321.sh
[[-z$(ps-ef|grep123456.sh|grep-v)]]&&nohupsh123456.sh&
第二个脚本123456.sh
[[-z$(ps-ef|grep654321.sh|grep-v)]]&&nohupsh654321.sh&
两个互相检查进程在不在,不在就拉起来
⑥ shell脚本中用nohup启动3个进程,输入回车后会有一或两个进程被杀掉,是什么原因
改写为:
( nohup ./a ) &
( nohup ./b ) &
( nohup ./c ) &
wait
说明:开启三个子shell在后台执行操作,( )表示开启子shell,
若不加圆括号直接这样写,则直接在父shell操作,可能造成逻辑错误,因为这个不是在命令行执行 的进程,
wait根据实际情况添加,表示等前面三个进程执行结束在进行下一步
⑦ 关于linux系统shell中有nohup命令,放入到crontab无法执行
要具体看下是什么命令(请复制出来),因为crontab执行时的环境变量PATH可能和界面上的bash不一样,有可能找不到所需的命令,这时候需要使用绝对路径,并不是nohup的问题。
另外也要看下crontab的服务是否已经运行,否则是不会有定时任务执行的
⑧ shell脚本中count_log=`ls logs_backup/nohup* | grep $nowdate -c`是什么意思
count_log=`lslogs_backup/nohup*|grep$nowdate-c`
count_log:
定义shell变量
=:
给shell变量赋值(注意等号两边不能有空格,和C语言区别)
``:
反引号``是命令替换,命令替换是指Shell可以先执行``中的命令,
将输出结果暂时保存,在适当的地方输出。
ls:
列出文件
logs_backup/nohup*:
logs_backup目录下所有以nohup开头的文件
|:
管道符,把前面命令的输出作为管道符后面命令的输入
grep:
文本搜索工具
搜索变量$nowdate,前面nowdata变量被赋值为当前时间
-c是grep命令的选项,计数搜索到匹配字符的次数。
整条命令:
给count_log变量赋值,值为logs_backup目录下文件前缀为bohup*文件内容含有
当前脚本执行时间的字符出现的次数。
⑨ nohup sh./start.sh &与nohup ./start.sh &有什么区别
nohup sh./start.sh &与nohup ./start.sh &的区别:
nohup,就是用nohup.out代替tty,避免挂起。
sh xxx.sh是用sh 执行start.sh,start.sh可以没有执行标志,可以不用加./,可以不用在脚本第一行写上#/bin/sh(当然,bsh可以不写)。
./start.sh是调用脚本第一行制定的shell去解释执行,缺省为sh,就是bsh &表示后台运行。