zoukankan      html  css  js  c++  java
  • Linux使用小笔记<进程操作篇>

    问题一: 查看哪个进程占用了哪个端口、以及杀掉进程

    1.查看占用端口: sudo lsof -i :80

    lsof 命令 是 list open files的意思 

      比如:

      lsof filename 显示打开指定文件的所有进程

      lsof -i 用以显示符合条件的进程情况(4、6、协议、:端口、 @ip )

    2. 根据PID杀掉进程: sudo kill 1000  (进程号)

    kill 命令 语法是 kill [信号或选项] PID(s)

      使用 kill -l 查看所有的信号

      比如杀掉一个进程是 kill SIGKILL PID 或者 kill -9 PID 这里的-9代表着 SIGKILL

    另外还有pkill命令 ,是用来杀掉匹配名字的进程,可以用用正则匹配名字

    还有killall 是杀掉所有同名的

    问题二:让进程在后台运行 


    开启终端执行一个较长的命令(或登录远程服务器执行命令),然后一关终端结果任务也终止了。但是我们的想法是让它在后台执行,而且关掉终端也不会终止。

    关掉终端会终止任务的原因:当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。所以解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

    解决命令:使用 nohup 或者 setsid

    一、nohup

    nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。可用">filename 2>&1"来更改缺省的重定向文件名。而在结尾 添加 ' & ' 这个字符可以让命令在后台运行

    例如:

    nohup python3 manage.py runserver .... &

    这个进程的父id仍然是这个终端的pid。

    二、setsid

    setsid ping www.ibm.com


    这个任务的父id是init进程的id 即 1,与上一个命令比较有所不一样。

    另外:这里还有一个关于 subshell 的小技巧。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是其中之一。

    例如

    (ping www.ibm.com &)

    会发现新提交的进程的父 ID(PPID)为1(init 进程的 PID),并不是当前终端的进程 ID。因此并不属于当前终端的子进程,从而也就不会受到当前终端的 HUP 信号的影响了。

    出处: http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

  • 相关阅读:
    八数码难题 (codevs 1225)题解
    小木棍 (codevs 3498)题解
    sliding windows (poj 2823) 题解
    集合删数 (vijos 1545) 题解
    合并果子 (codevs 1063) 题解
    等价表达式 (codevs 1107)题解
    生理周期 (poj 1006) 题解
    区间 (vijos 1439) 题解
    区间覆盖问题 题解
    种树 (codevs 1653) 题解
  • 原文地址:https://www.cnblogs.com/imyijie/p/4783598.html
Copyright © 2011-2022 走看看