当前位置:首页 » 网页前端 » 后天执行脚本提示没有子进程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

后天执行脚本提示没有子进程

发布时间: 2023-06-27 14:40:04

‘壹’ linux的shell脚本中等待子程序执行超时

判断进程是否存在。示例:

timer=20#20s定时器
flag=1#标识进程是否存在
while[$timer-gt0]
do
sleep2
ps-aux|grep进程名|grep-vgrep>/dev/null#查询进程
[$?-ne0]&&flag=0&&break#进程不存在了就退出循环
lettimer-=1
done
[$flag-eq1]&&kill-9$(ps-aux|awk'/bash$/{print$1}')

‘贰’ 紧急求助SHELL脚本执行问题

sh -x 看一下

你的while循环中的<<FTPIT 需要在后边做个收尾,这个模式是
<<EOF
(内容)
EOF
所以你需要在结尾加上FTPIT,要不这个内容就没结束。
跟分号不分号没任何关系

ftp -i -n $ipadd <<FTPIT
user $ftpuser $ftppwd
echo "connect $ipadd success!"
cd /home/dcms/test
binary
get $line
echo "get file $line "
close
bye
FTPIT

‘叁’ 为什么我用python调用了process运行后程序没报错但是子进程不会执行

这是因为multiprocessing模块在交互模派行式是不支持的,在 cmd 里头启羡此输入 python xxx.py 来悄迅运行起来,你就可以看到子进程的执行了。

‘肆’ mysql是用的.sh写的脚本,执行后提示没有命令

在Shell中执行mysql的脚本,这里介绍比较容易使用的一种方法
首先写好sql的脚本,后缀为.sql,比如
sql_file.sql:内容如下
#这是SQL的脚本
create table if not exists test_sql(id int(10),name varchar(20));
insert into test_sql values(1,'正餐');
select * from test_sql;

很简单的创建、插入、查询
之后shell的脚本,内容如下
#!/bin/bash #这是执行SQL的脚本,传入数据库表,和SQL文件名即可
name=$1
file_name=$2
cd /opt/lampp/bin ./mysql -uroot -p123456 <<EOF
use ${name};
source ${file_name};
EOF

./mysql -uroot -p123456是进入mysql的命令,前面的路径可以改成自己的绝对路径
<< EOF EOF 中间可以写出任意的mysql脚本
其中,如果要执行某个.sql的命令,直接用 source 脚本.sql 即可执行该脚本上面的命令,这里使用的是source sql_file.sql
此外,如果在mysql中需要执行shell脚本
可以在EOF中 ./mysql -uroot -p123456<<EOF \! sh shell.sh EOF
前面加上 !\ +linux中执行的shell命令即可

‘伍’ 怎么运行脚本

首先脚本需要有执行权限

chmo+xfile.sh

执行脚本有三种方法:

1../file.sh

特点:开启bash子进程来执行,也就是开启额外的进程来进行,不影响原进程的变量、配置等

2.bashfile.sh

特点:和./file.sh相同

3.sourcefile.sh或者.file.sh

特点:在原bash进程中执行脚本。


第三种方法主要用于在脚本中切换用户su、切换目录cd等命令。

source和.命令是相同的。

你可以搜索source

补充,如何查看脚本运行是否开启了bash子进程

  1. vim file.sh

  2. 写入

    #!/bin/bash

    #echo $$命令会输出bash进程ID

    echo $$

  3. 保存并赋予可执行权限chmod u+x file.sh

  4. 在你的shell中输入,echo $$ 屏幕输出4176

  5. ./file.sh 屏幕输出3600

  6. bash file.sh 屏幕输出3984

  7. source file.sh 屏幕输出4176 和 你直接在shell中输出的一样,说明是在同一个bash进程