當前位置:首頁 » 網頁前端 » 後天執行腳本提示沒有子進程
擴展閱讀
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進程