1

我正在尝试在 Linux Ububtu 12.04 LTS 服务器上运行 shell 脚本。这是我的脚本:

#!/bin/bash
PROGRAM=./home/lab/data/setup_exp/Simulator
FILE_PART_PREFIX="/home/lab/data/pcap_partial/h_"
FILE_PART_NUM=3
RECEIVER_SIZE=4096
SENDER_SIZE=4096
BETA=0.25
UPDATE=400
MARKER=20
MODE=5
RESULT_PREFIX="/home/lab/data/setup_exp/size/size_eq4/res_"
time_part=1200
if [ ${time_part} -eq 1200 ];then
 nohup ${PROGRAM} 1 ${FILE_PART_PREFIX}${time_part}.pcap ${RECEIVER_SIZE} ${SENDER_SIZE} ${BETA} ${UPDATE} ${MARKER} ${MODE} >> ${RESULT_PREFIX}${time_part} 2>&1 &
fi
time_part=1500
if [ ${time_part} -eq 1500 ];then
nohup ${PROGRAM} 1 ${FILE_PART_PREFIX}${time_part}.pcap ${RECEIVER_SIZE} ${SENDER_SIZE} ${BETA} ${UPDATE} ${MARKER} ${MODE} >> ${RESULT_PREFIX}${time_part} 2>&1 &
fi
time_part=1900
if [ ${time_part} -eq 1900 ];then
nohup ${PROGRAM} 1 ${FILE_PART_PREFIX}${time_part}.pcap ${RECEIVER_SIZE} ${SENDER_SIZE} ${BETA} ${UPDATE} ${MARKER} ${MODE} >> ${RESULT_PREFIX}${time_part} 2>&1 &
fi

然后,这些是上面脚本目录下的文件和子目录,叫做 sizesetup.sh :Simulator size sizesetup.sh Simulator 和 sizesetup.sh 的权限设置为 755。

此外,Simulator 的输入文件在 下/home/lab/data/pcap_partial ,分别命名为 h_1200、h_1500 和 h_1900。

我的问题是我曾经sh sizesetup.sh运行此脚本而没有弹出任何错误消息。然而,脚本没有被执行(我使用'top'和'ps'命令来检查脚本的状态)

4

1 回答 1

0

这条线在我看来很可疑:

PROGRAM=./home/lab/data/setup_exp/Simulator

我不认为领先的点在那里。您可能来自 Windows,听说过在 Linux 上运行程序,您需要像这样调用它:./program.

这在技术上是不正确的。造成这种混乱的原因是 Windows 和 Linux 中 PATH 处理的不同。

在 Windows 上,当您尝试执行程序时,首先搜索当前目录,而不管当前目录是否列在%PATH%环境变量中。

在 Linux 上,既不隐式搜索当前目录(与 Windows 行为相反),也不默认将当前目录(即.)包含在$PATH环境变量中。因此,为了执行驻留在当前目录中的程序,您可以像这样调用它:./program即明确指定可执行文件的相对路径

./home/lab/data/setup_exp/Simulator看起来不像相对路径(尽管我可能肯定是错的),因此前导点不应该在那里。

于 2012-08-20T18:37:59.030 回答