[英]Can not run python script in background
我写了一个python脚本。 当我直接运行它(如下所示)时,它可以正常工作。
python check_C1_criteria_file.py > test.out
但是,当我在后台运行它(如下所示)时,它既不显示任何结果,也不显示错误。
python check_C1_criteria_file.py > test.out &
要么
nohup python check_C1_criteria_file.py &
有什么问题吗? 谁能帮我这个?
更新 :
该脚本的主要部分如下:
blastOutput_file=sys.argv[1];
lengthFile = sys.argv[2];
with open(blastOutput_file, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter='\t')
sys.stdout.write('#query_id'+'\t'+'Mapping_Id'+'\t'+'Description'+'\n');
for row in reader:
tid=row[0];
subid=row[1];
mapid=getMapping_id(subid);
idDes = search_id(lengthFile, mapid);
if idDes is not None:
sys.stdout.write(tid+'\t'+str(mapid)+'\t'+str(idDes)+'\n');
我想念什么吗?
您的脚本在进行任何终端处理吗? 除了简单的sys.stdout.write()
或调用print
(Python2.x)或print()
(Python3.x)之外,它还执行其他任何I / O吗? 它是否执行任何input()
或raw_input()
或sys.stdin.read()
操作? 是Python 2还是3?
粗略地说,在后台运行命令与在前台运行命令时,唯一不同的地方就是那些与您对终端的调用有关的东西。 在后台尝试访问您的终端的过程可能会进入休眠状态,直到它回到前台为止。 正常写入stdout不会阻止...但是任何对curses函数的调用,甚至getpass()
一些termio内容都可能会将终端设置为会在尝试进行终端写入时阻止的模式。
你可以试试
nohup python check_C1_criteria_file.py >test.out 2>&1 &
您最好检查一下该程序是否正常终止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.