为什么我终止程序后我的linux上的python程序没有执行?

时间:2016-05-27 07:47:17

标签: python linux terminal

Terminal results when running a program我正在linux中运行python脚本,我遇到了多次运行程序的问题。当我执行程序时,程序正常运行,我给它一个SIGTSTP信号ctrl + z来杀死程序。但是,当我再次运行程序时,程序不会执行,linux会提示我输入新命令。我试图杀死pid并杀死进程,但它没有解决问题。我必须重新启动系统才能让程序重新运行。请告知解决方案,以便我可以杀死程序并再次运行它而无需重新启动系统。

5 个答案:

答案 0 :(得分:2)

SIGSTOP不会终止程序,它会暂停程序,因此它不会被终止。您应该将SIGCONT发送给该计划,或者输入fg继续该计划。

答案 1 :(得分:0)

SIGTSTP或SIGSTOP信号暂停,无法杀死此程序,使用SIGCONT信号可以唤醒并继续它

Signal  Description Signal number on Linux x86[1]
SIGABRT Process aborted 6
SIGALRM Signal raised by alarm  14
SIGBUS  Bus error: "access to undefined portion of memory object"   7
SIGCHLD Child process terminated, stopped (or continued*)   17
SIGCONT Continue if stopped 18
SIGFPE  Floating point exception: "erroneous arithmetic operation"  8
SIGHUP  Hangup  1
SIGILL  Illegal instruction 4
SIGINT  Interrupt   2
SIGKILL Kill (terminate immediately)    9
SIGPIPE Write to pipe with no one reading   13
SIGQUIT Quit and dump core  3
SIGSEGV Segmentation violation  11
SIGSTOP Stop executing temporarily  19
SIGTERM Termination (request to terminate)  15
SIGTSTP Terminal stop signal    20
SIGTTIN Background process attempting to read from tty ("in")   21
SIGTTOU Background process attempting to write to tty ("out")   22
SIGUSR1 User-defined 1  10
SIGUSR2 User-defined 2  12
SIGPOLL Pollable event  29
SIGPROF Profiling timer expired 27
SIGSYS  Bad syscall 31
SIGTRAP Trace/breakpoint trap   5
SIGURG  Urgent data available on socket 23
SIGVTALRM   Signal raised by timer counting virtual time: "virtual timer expired"   26
SIGXCPU CPU time limit exceeded 24
SIGXFSZ File size limit exceeded    25

答案 2 :(得分:0)

您应确保您的线程在守护程序模式下运行。当你点击ctrl-c时,这可能是阻止他们干净利落的原因。像这样设置它们:

t = threading.Thread()
t.daemon = True  // <- this is the important bit...
t.start()

答案 3 :(得分:-1)

好的,我找到了解决方案。

在linux终端上输入以下命令:

ps -ef |grep yourfile.py

您将看到许多仍在后台运行的进程。要杀死它们,请输入以下命令:

kill -9 pid

不要输入pid。键入标识进程的编号,如终端显示

中所示

killing background processes that don't allow you to execute your program

答案 4 :(得分:-1)

使用以下命令终止所有进程并确保没有后台进程在运行。

控制+ \