我写了一个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');
我错过了什么吗?
答案 0 :(得分:1)
您的脚本是否在进行任何类型的终端处理?它是否可以执行除简单sys.stdout.write()
之外的任何I / O或调用print
(Python2.x)或print()
(Python3.x)?是执行任何input()
或raw_input()
还是sys.stdin.read()
操作?是Python 2还是3?
粗略地说,在后台运行命令与在前台运行命令时,唯一不同的是与终端进行的任何调用相关的事情。尝试访问终端的后台进程可能会暂停,直到它返回到前台。对stdout的正常写入不会阻塞...但是对curses函数的任何调用,甚至getpass()
中的一些termio东西都可能将终端设置为阻止尝试终端写入的模式。
答案 1 :(得分:0)
你可以尝试
nohup python check_C1_criteria_file.py >test.out 2>&1 &
你最好检查一下这个程序是否正常终止。