精华内容
下载资源
问答
  • 当我们通过程序(比如putty)连接到linux服务器以后。运行了一个python程序。常规做法是 python3 demo.py 然后程序跑起来了。当我们把终端关闭的时候。发现程序也跟着挂掉了。 解决办法: 使用命令 nohuppython3 ...

    当我们通过程序(比如putty)连接到linux服务器以后。运行了一个python程序。常规做法是 python3  demo.py

    然后程序跑起来了。当我们把终端关闭的时候。发现程序也跟着挂掉了。

    解决办法:

    使用命令   nohup  python3  demo.py &    命令就可以了。。

    多了 一个  nohup   和 &   

    展开全文
  • linux 系统shell运行程序不退出

    千次阅读 2019-01-29 19:03:00
    如果通过ssh远程连接到linux系统终端,在shell下执行程序。假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile。 当我们用 ./app paramfile 命令运行程序后关闭ssh连接退出...

    如果通过ssh远程连接到linux系统终端,在shell下执行程序。假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile。

    当我们用 

    ./app paramfile 

     

    命令运行程序后关闭ssh连接退出shell,会导致app程序也跟着退出。如果不想app退出,怎么办?

    我们可以使用nohup,命令如下

    nohup ./app paramfile  &

     

    这样当我们关闭终端后,再连接上去就会发现app还在执行。最后的 & 是让进程在后台运行,不占用当前终端,使得我们可以执行其他命令。日志会输出到当前目录下的nohup.out

    有时候我们的程序会在终端打印一些信息,如果不想这样,我们可以把他们重定向。另外还有nohup.out存在,运行很久以后nohup.out文件会很大,可以使用如下命令

    nohup ./app paramfile >/dev/null 2>&1 &

     

    >/dev/null 把标准输出重定向到/dev/null(这是一个特殊的设备文件,写入到它的东西,全都不见了),> 如果左边没有东西,默认就是标准输出。2>&1 把标准错误输出重定向到标准输出

    0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR

    转载于:https://www.cnblogs.com/fisherman-luo/p/10335532.html

    展开全文
  • 你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半个小时就会...

    你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半个小时就会前功尽弃,你非常气愤……

    在Linux下,如果你要执行的shell命令耗时特别长,并且:(1)你的网络不稳定,随时可能断网;或者(2)你在执行了shell命令之后必须要关闭终端软件(例如SecureCRT)。


    那么你就需要以脱离终端的方式在后台运行这个shell命令。

    方法如下:

    (1)输入命令:

    nohup 你的shell命令 &

    (2)回车,使终端回到shell命令行;

    (3)输入exit命令退出终端:exit

    (4)现在可以关闭你的终端软件了,等过足够的时间,让你的shell命令执行完了再上去看结果吧。

    其中,nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&”可以让你的命令在后台运行。

    以脱离终端的方式在后台运行shell命令有这样几个好处:只要你执行过了命令,那么你的网络中断不会对你有任何影响,并且你就可以关闭终端软件了。

    

    一、为什么要使程序在后台执行

    我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。所以使程序在后台跑有以下三个好处:

    1:我们这边是否关机不影响日本那边的程序运行。(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼)

    2:不影响计算效率

    2:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。

    二、怎么样使程序在后台执行

    方法有很多,这里主要列举两种。假如我们有程序pso.cpp,通过编译后产生可执行文件pso,我们要使pso在linux服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果。(假设操作都在当前目录下)

    方法1在终端输入命令:

     # ./pso > pso.file 2>&1 & 

    解释:将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。

          当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命

    令:#cat pso.file)。

      

    方法2在终端输入命令:

    # nohup  ./pso > pso.file 2>&1 &

    解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前

    目录下的pso.file文件中。当客户端关机后重新登陆服务器后,直接查看pso.file

    文件就可看执行结果(命令:#cat pso.file)。

    三、常用任务管理命令

    # jobs      //查看任务,返回任务编号n和进程号

    # bg  %n   //将编号为n的任务转后台运行

    # fg  %n   //将编号为n的任务转前台运行

    # ctrl+z    //挂起当前任务

    # ctrl+c    //结束当前任务

     

    注:如果要使在前天执行任务放到后台运行,则先要用ctrl+z挂起该任务,然后用bg使之后台执行。

     

    附:

     

    在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:

    $ ./test.sh & 
    [1] 17208  
    $ jobs -l 
    [1]+ 17208 Running                 ./test.sh & 

    对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:

    $ ./test.sh 
    [1]+  Stopped                 ./test.sh  
    $ bg %1 [1]+ ./test.sh &  
    $ jobs -l 
    [1]+ 22794 Running                 ./test.sh & 

     

    但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)

    $ echo $$ 
    21734  
    $ nohup ./test.sh & 
    [1] 29016  
    $ ps -ef | grep test 
    515      29710 21734  0 11:47 pts/12   00:00:00 /bin/sh ./test.sh 
    515      29713 21734  0 11:47 pts/12   00:00:00 grep test 
    $ setsid ./test.sh & 
    [1] 409  
    $ ps -ef | grep test 
    515        410     1  0 11:49 ?        00:00:00 /bin/sh ./test.sh 
    515        413 21734  0 11:49 pts/12   00:00:00 grep test 

    上面的试验演示了使用nohup/setsid加上&使进程在后台运行,同时不受当前shell退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用disown命令:

    $ ./test.sh & 
    [1] 2539  
    $ jobs -l 
    [1]+  2539 Running                 ./test.sh &  
    $ disown -h %1  
    $ ps -ef | grep test 
    515        410     1  0 11:49 ?        00:00:00 /bin/sh ./test.sh 
    515       2542 21734  0 11:52 pts/12   00:00:00 grep test 

    另外还有一种方法,即使将进程在一个subshell中执行,其实这和setsid异曲同工。方法很简单,将命令用括号() 括起来即可:

    $ (./test.sh &)  
    $ ps -ef | grep test 
    515        410     1  0 11:49 ?        00:00:00 /bin/sh ./test.sh 
    515      12483 21734  0 11:59 pts/12   00:00:00 grep test 

    注:本文试验环境为Red Hat Enterprise Linux AS release 4 (Nahant Update 5),shell为/bin/bash,不同的OS和shell可能命令有些不一样。例如AIX的ksh,没有disown,但是可以使用nohup -pPID来获得disown同样的效果。

    还有一种更加强大的方式是使用screen,首先创建一个断开模式的虚拟终端,然后用-r选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到nohup的效果,这在有多个命令需要在后台连续执行的时候比较方便:

    $ screen -dmS screen_test  
    $ screen -list There is a screen on:
                  27963.screen_test       (Detached) 1 Socket in /tmp/uscreens/S-jiangfeng.  
    $ screen -r screen_test

    转载文章,侵权立删.

    展开全文
  • Linux系统运行c++程序

    千次阅读 2019-08-21 16:52:23
    如果我们写一个运行在windows平台的应用程序,那么用Linux写肯定是傻瓜或者强迫症,因为在windows平台调试windows程序可以更容易发现并解决问题,反过来也一样,在Linux平台调试出来的程序可以更好的适应Linux平台的...

    引言

    为什么要在Linux下写程序? 
    首先要问一下自己,为什么要写这个程序。 
    如果我们写一个运行在windows平台的应用程序,那么用Linux写肯定是傻瓜或者强迫症,因为在windows平台调试windows程序可以更容易发现并解决问题,反过来也一样,在Linux平台调试出来的程序可以更好的适应Linux平台的环境,如果在windows下写出一个程序,结果到了Linux的运行环境出了暗病,那真是欲哭无泪,无从查起。 
    而很多时候,我们的程序都不是运行在windows平台的,例如嵌入式设备的内存容量十分有限,只能把Linux内核裁裁剪剪然后运行,所以嵌入式开发者一般都要求在Linux平台下工作

    正文

    在windows下,我们写C++程序一般会有如下几个步骤:

    • 编写.cpp文件,代码都在里面;
    • 可能还有一些.h文件之类的支持文件,这些文件一般都会放在一起,或者相对位置是固定的;
    • 编译文件,链接文件,生成.exe文件
    • 双击执行.exe文件(其实开发平台里的“运行”就是帮你双击了一下而已)

    在Linux下这些步骤基本都是一样的,不同的是,Linux最后生成的文件不是.exe,而是.out

    步骤

      • 首先得有个Linux操作系统,如果是新手(像我)最好选一个图形界面做的好的,例如Ubuntu。一般这些操作系统都是免费开源的,这也是Linux的一大好处,可以直接修改一切文件,而windows的防御措施对于菜鸟和一般用户很好用,但是对开发者而言就是个坑。
      • 在Linux操作系统上新建一个文件夹,在里面放你的工程,如下图 
        这里写图片描述
      • 编写代码的部分就可以跳过了吧,例如我们都非常熟悉的hello world 
        这里写图片描述
      • 接下来是编译,打开终端,将终端路径设置为你的工程目录。cd 和ls命令真是好用。。。dir命令跟ls命令类似,看个人喜好吧,都一样。 
        这里写图片描述

      • 输入命令 gcc test.cpp 
        这里写图片描述

      • 诶→_→?为什么编译不通过?当然不是程序写错了,而是 gcc 是 c 语言的编译器,而我们写的代码是C++代码,所以改为输入 g++ test.cpp 
        这里写图片描述

      • 没有任何问题,这个时候我们可以看见工程目录上多了一个a.out,它就是我们的“可执行文件”了。 
        这里写图片描述

      • 可是为什么是 a.out 而不是 b.out 或者 nfsdnksd.out呢?这是默认的,没有为什么→_→如果想给编译出来的文件起一个名字,可以在编译的时候用 -o 命令,例如 g++ test.cpp -o joyce 
        这里写图片描述

      • 然后我们就可以看到,工程目录多了一个joyce文件 
        这里写图片描述

      • 执行文件的时候来的,在终端输入 ./a.out 即可看到你的程序输出。输入 ./joyce 也是一样的。记住不要漏了斜杠前面的点!! 
        这里写图片描述

      • 这样我们就完成了一个最基本的程序编译和执行。

    如果认为有什么可以改进的地方,麻烦多评论,分享经验,大家一起进步

    展开全文
  • CodeBlocks在Linux中默认的输出终端是 XTerm 终端,而不是GNOME桌面的 gnome-terminal 终端,如果系统中没有安装XTerm则会在运行程序时出现错误,需要将其输出终端换成 gnome-terminal 终端。 二、解决办法 打开...
  • linux系统运行java程序

    千次阅读 2018-11-23 22:16:02
    最近需要把自己写的一个tcp的程序放在云端,但是,不熟悉linux系统。 遇到这个问题: -bash: javac: command not found 百度之后,发现是因为我的java的path配置上有问题。但是我的java又可以正常运行,着实让我...
  • 在ROS程序中经常涉及到需要打开多个终端运行程序的情况,通常ROS程序会包含多个节点,而每个节点都需要在一个终端中运行,在脚本中打开新的终端并在其中运行程序的方法如下 gnome-terminal -x bash -c "命令" 命令...
  • linux下shell启动多个终端运行程序

    千次阅读 2019-03-15 16:00:27
    参考链接 https://blog.csdn.net/m_zhangJingDong/article/details/79107099 #!/bin/bash dev1="/dev/ttyUSB0"; dev2="/dev/ttyUSB0"...source ~/catkin_ws/devel/setup.bash ... -x bash ...
  • 当我们登录到linux服务器运行程序的时候,如果链接服务器的ssh终端断开,服务器程序往往也会断掉。 一般解决方法有命令后面加一个 &后台运行,或者使用nohup命令。 其实screen命令是一个非常好用的命令。 ...
  • LINUX下在任意终端运行可执行程序

    千次阅读 2018-07-13 10:57:35
    如何将自己编译好的可执行程序在任意终端下运行?1.将编译好的可执行程序移动/...配置环境变量对于bash:终端运行:vi ~/.bashrc在最下方加入如下两行export FILENAMEHOME=/binexport PATH=${FILENAMEHOME}/bin:${P...
  • ubuntu 终端运行程序后关闭终端继续运行 如果程序是your_command nohup your_command &
  • Linux查看后台运行程序,并将其关闭 在Linux的应用程序放在后台运行,可以让我们同时执行多个任务,提高工作效率。 1.将程序放在后台运行 1.1运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使...
  • Linux终端退出后,后台运行程序

    千次阅读 2018-07-20 18:06:31
    一般我们用终端连接linux服务器时,运行一个程序,退出终端后,程序就自动停止运行了。 无论进程是在后台还是在前台,它都与启动它的终端实例紧密绑定。当终端关闭时,它通常向绑定到终端的所有进程(前台、后台...
  • linux系统运行java swing 程序

    千次阅读 2016-07-19 16:11:09
    想要在linux系统运行java swing 程序 1、export DISPLAY=192.168.42.19:0 #192.168.42.19 本机ip 2、打开xshell的 Xmanager.exe 3、运行java swing程序
  • Linux系统运行.net core程序

    千次阅读 2020-05-03 20:57:43
    本文所使用的测试环境: vistual studio 2019 centos7 步骤: 1 安装vistual studio 2019,已安装的...2 新建.net core 控制台程序,本文测试的项目名称为Test,默认会输出Hello world,按照默认生成即可 ...
  • Linux系统-shell脚本运行程序

    万次阅读 2017-07-28 19:03:15
    linux,shell,程序运行
  • 为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。...让程序在后台跑后,不会占据终端,我们可以用终端做别的...
  • Linux系统终端下编译并执行C/C++代码

    万次阅读 多人点赞 2018-11-08 22:44:15
    Linux系统终端下编译并执行C/C++代码
  • Linux系统终端常用指令命令汇总

    万次阅读 多人点赞 2018-07-20 17:37:39
    命令 功能说明 线上查询及帮助命令 man ... 查看命令帮助,命令... 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令 ls 全拼list,功能...
  • Linux下把程序放到后台运行,相关的命令,如下:   1、把程序放后台运行,简单的话,只要在命令后面加一个“&”, 如: php test.php & 2、或者在运行命令后,按一下 Ctrl+Z,如运行 ...
  • Ubuntu系统终端运行Python程序

    千次阅读 2020-06-16 15:25:50
    1、打开终端,输入'conda env list'命令查看当前存在的虚拟环境(如果没有合适的环境,则需要新建) 2、使用'conda activate pytorch1.0'命令激活将要使用的虚拟环境 3、使用'cd'命令进入存放demo.py文件的...
  • Linux 下后台运行程序,查看和关闭后台运行程序

    万次阅读 多人点赞 2017-06-30 16:01:16
    直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。 (1)&命令  功能:加在一个命令的最后,可以把这个命令放在后台执行 (2)nohup命令  功能:不挂断...
  • 关于为什么关闭终端后,程序会终止,可以查看这篇博文:https://blog.csdn.net/gatieme/article/details/52777721 参考2,linux后台执行命令:&...大概就是,终端关闭后,系统会发送一个SIGHUP(挂断信号)...
  • 一、为什么要使程序在后台执行我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。...让程序在后台跑后,不会占据终端,我们可以用终端做别的事
  • 计算机操作系统主流的还是Windows系统和Linux系统。对于在Windows系统上编写与运行Java程序相对...其实在Linux系统运行Java程序和Windows差不多,都需要安装jdk(Java Development kit)这个开发工具。不一样的是...
  • 问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)...解决方法:使用nohup命令让程序在关闭窗口(切换SSH连接)的时候程序还能继续在后台运行。 Unix...
  • Unix/Linux下一般想让某个程序在后台运行,很多都是使用&在程序结尾来让程序自动运行;但如果要想在退出终端后,程序依然还在后台运行,则要用nohup与&组合来实现。nohup 命令用途不挂断地运行命令语法nohup Command...
  • linux启动自动运行程序

    千次阅读 2012-08-15 11:01:54
    首先,linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件(脚本程序简单的说就是把要运行程序写到一个 文件里让系统能够按顺序执行,类似windows下的autorun.dat文件),另外在/...
  • 解决Linux关闭终端(关闭SSH等)后运行程序自动停止

    万次阅读 多人点赞 2016-10-10 14:49:03
    1 问题发现之前在服务器上起一个python的服务, 放到后台运行. `我关闭这个SSH之后,该服务不可用,再次登入到服务器,已经没有这个python进程为此我写了一个测试程序来描述此问题///////////////////// // hello.c /...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,618
精华内容 85,447
关键字:

linux系统终端运行程序

linux 订阅