我正在尝试在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。
此外,模拟器的输入文件位于/home/lab/data/pcap_partial
下
,名为h_1200,h_1500和h_1900。
我的问题是我使用sh sizesetup.sh
运行此脚本时没有弹出任何错误消息。但是,脚本没有执行(我使用'top'和'ps'命令来检查脚本的状态)
答案 0 :(得分: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
看起来不像相对路径(虽然我可能确实错了),因此不应该在那里使用前导点。