加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

如何在unix中创建任意脚本

发布时间:2022-10-13 15:00:22 所属栏目:Unix 来源:转载
导读: 你可以使用nohup和&运算符守护Unix中的任何可执行文件:
复制代码
nohup yourScript.sh script args&
nohup命令允许你关闭shell会话而不杀死脚本,而&将脚本放在后台,这样你就可以得到she

你可以使用nohup和&运算符守护Unix中的任何可执行文件:

复制代码

nohup yourScript.sh script args&

nohup命令允许你关闭shell会话而不杀死脚本,而&将脚本放在后台,这样你就可以得到shell提示来继续你的会话。 它的输出将在这个庄园intertwined,这样带来唯一的小问题是标准输出和标准错误都被送到了把/nohup 。出来所以如果你启动几个 scripts. 更好的命令是:

复制代码

nohup yourScript.sh script args> script.out 2>script.error&

这将把标准输出到你选择的文件,并将标准错误发送给你选择的其他文件。 如果你想只使用一个文件为标准输出和标准错误unix脚本,你可以:

复制代码

nohup yourScript.sh script args> script.out 2>&1 &

2> & 1 通知shell将标准错误( 文件描述符 2 ) 重定向到与标准输出( 文件描述符 1 ) 相同的文件。

要只运行一次命令并重新启动它,可以使用这里脚本:

复制代码

#!/bin/bashif [[ $# echo"Name of pid file not given."

exitfi# Get the pid file's name.PIDFILE=$1

shiftif [[ $# echo"No command given."

exitfiecho"Checking pid in file $PIDFILE."#Check to see if process running.PID=$(cat $PIDFILE 2>/dev/null)if [[ $? = 0 ]]; then

ps -p $PID>/dev/null 2>&1

if [[ $? = 0 ]]; then

echo"Command $1 already running."

exit

fifi# Write our pid to file.echo $$> $PIDFILE# Get command.COMMAND=$1

shift# Run command until we're killed.while true; do

$COMMAND"$@"

sleep 10 # if command dies immediately, don't go into un-ctrl-c-able loopdone

第一个参数是要使用的pid文件的名称。 第二个参数是命令。 所有其他参数都是命令的参数。

如果你将这里脚本命名为 restart.sh,这就是你将如何调用它:

复制代码

nohup restart.sh pidFileName yourScript.sh script args> script.out 2>&1 &

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章