如何在终端使用后台运行mac 恢复模式 终端启动一个Linux应用程序

如何在终端下以后台模式运行Linux程序_Linux教程_Linux公社-Linux系统门户网站
你好,游客
如何在终端下以后台模式运行Linux程序
来源:Linux中国&
作者:Linux
Linux终端窗口
这是一个简短但是非常有用的教程:它向你展示从终端运行Linux应用程序的同时,如何保证终端仍然可以操作。
在Linux中有许多方式可以打开一个终端,这主要取决于你的发行版的选择和桌面环境。
使用的话,你可以使用CTRL + ALT + T组合键打开一个终端。你也可以点击超级键(Windows键)打开一个终端窗口。在键盘上,打开Ubuntu Dash,然后搜索"TERM"。点击"Term"图标将会打开一个终端窗口。
其他诸如XFCE, KDE, LXDE, Cinnamon和MATE的桌面环境,你将会在菜单中发现&终端&这个应用。还有一些发行版会把终端图标放在菜单项,或者在面板上放置终端启动器。
你可以在终端里面输入一个程序的名字来启动一个应用。举例,你可以通过输入"firefox"启动火狐浏览器。
从终端运行程序的好处是可以使用额外的选项。
举个例子,如果你输入下面的命令,一个新的火狐浏览器将会打开,而且默认的搜索引擎将会搜索引号之间的词语:
firefox -search "Linux.About.Com"
你会发现,如果你运行火狐浏览器,应用程序打开后,控制权将会回到终端(重新出现了命令提示符),这将意味着你可以继续在终端工作。
通常情况下,如果你通过终端运行一个程序,程序打开后,并且直到那个程序关闭结束,你都将不会获得终端的控制权。这是因为你是在前台打开程序的。
想要从终端运行一个程序,并且立即将终端的控制权返回给你,你需要以后台进程的方式打开程序。
为了以后台进程的方式打开一个程序,只需要添加符号(&)到命令中,如下面所示:
libreoffice &
在终端中仅仅提供程序的名字,应用程序可能运行不了。如果程序不存在于一个设置在PATH 环境变量的文件夹中,你需要指定完整的路径名来运行程序。
/path/to/yourprogram &
如果你并不确定一个程序是否存在于Linux文件系统中,使用find或者locate命令来查找该应用程序。
找一个文件的语法如下:
find /path/to/start/from-name programname
举个例子,可以使用下面的命令寻找Firefox的位置:
find /-name firefox
输出会很快滚动出很多,所以你可以以管道的方式控制输出的多少:
find /-name firefox | more
find /-name firefox | less
find命令将会返回因权限拒绝而发生错误的文件夹数量,这些文件夹你没有权限去搜索。
你可以使用sudo命令提升你的权限。如果sudo没有安装,你需要切换到拥有权限的用户:
sudo find /-name firefox | more
如果你知道你想寻找的文件在你的当前文件夹中,你可以一个点代替先前的斜线,如下:
sudo find .-name firefox | more
你可能不需要sudo来提升权限。如果你在home文件夹中寻找文件,sudo就不需要。
一些应用程序需要提升用户权限来运行,你可能得到一个缺少权限的错误,除非你使用一个具有足够权限的用户,或者使用sudo提升你的权限。
下面是一个小花招。如果你运行一个程序,而且它需要提升权限来运行,输入下面命令来提升权限重新执行:
本文永久更新链接地址:
相关资讯 & & &
& (02月08日)
& (11/29/:27)
& (02月15日)
& (02月02日)
& (10/18/:50)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款一般情况下关闭终端时,那么在这个终端中启动的后台程序也会终止,要使终端关闭后,后台程序保持执行,使用这个指令:
nohup 命令 &
如:nohup test.sh &青青子衿, 悠悠我心, 但为君故, 沉吟至今
使用nohup让程序在远程主机后台运行
  因为我购买的一个国外主机居然开放了Telnet权限,因此我也使用Telnet登录上去玩玩Linux,但发现一关闭窗口就自动和主机断开了,和Windows的终端不一样,所以就上网找啊找,找到了一个从后台一直运行某个程序的方法。  Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:  /usr/local/mysql/bin/mysqld_safe --user=mysql &  但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:  nohup /root/test.php &  提示:  [~]$ appending output to nohup.out  嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。  附:nohup命令参考  nohup 命令  用途:不挂断地运行命令。  语法:nohup Command [ Arg ... ] [ & ]  描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示&and&的符号)到命令的尾部。  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。  退出状态:该命令返回下列出口值:  126 可以查找但不能调用 Command 参数指定的命令。  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。  nohup命令及其输出文件  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。  该命令的一般形式为:nohup command &  使用nohup命令提交作业  如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:  nohup command & myout.file 2&&1 &  在上面的例子中,输出被重定向到myout.file文件中。  使用 jobs 查看任务。  使用 fg %n 关闭。  另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。
  除非注明,文章均为原创,转载请以链接形式标明本文地址
  本文地址:
刚刚试了没用,程序是在运行了jobs调不出来
to:pighead你是不是指在本地机上的终端?现在一般的终端程序gnome-terminal、Konsole、rxvt退出时通常都会自动把让还在运行后台的进程不挂起,类似与自动运行nohup,有些虚拟终端像xterm就不行。
.Serverbusy
比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:
真的不错, 行啊
但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。实际操作中发现某些机器上终端退出之后后台进程会结束,但是另外一些机器不会,虽然都是linux,内核版本也一样……这个一直不明是什么原因,是否和环境变量有关呢?
试试下面的命令方式:program 1&out.txt 2&err.txt &只使用 program &,可能程序还需要输出信息到标准控制台,也就是你的telnet终端,如果关闭,会导致程序自动退出,使用‘1&out.txt 2&err.txt’可以把终端输出重定向到文件,那么telnet退出的时候就不会影响到程序了。
.benxiaohai
其实用bg这么命令就好了
可以使用screen这个软件!
赞助商广告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.Python脚本后台运行的几种方式
这篇主要介绍了Python脚本后台运行的几种方式,linux下后台运行、通过upstart方式实现、通过bash脚本实现、通过screen、tmux等方式实现,需要的朋友可以参考下
一个用写的监控脚本test1.py,用while
True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本:
python test1.py
现在脚本正常运行,通过ps能看到进程号,此时直接关闭ssh终端(不是用exit命令,是直接通过putty的关闭按钮执行的),
再次登录后发现进程已经退出了。
通过后台启动的方式该问题已经解决,这里总结下,也方便我以后查阅。
linux 下后台运行
通过fork实现
linux环境下,在c中守护进程是通过fork方式实现的,python也可以通过该方式实现,示例代码如下:
#!/usr/bin/env python
time,platform
def funzioneDemo():
# 这是具体业务函数示例
fout = open('/tmp/demone.log',
while True:
fout.write(time.ctime()+'n')
fout.flush()
time.sleep(2)
fout.close()
def createDaemon():
# fork进程
os.fork() & 0: os._exit(0)
except OSError, error:
'fork #1 failed: %d (%s)' % (error.errno, error.strerror)
os._exit(1)
os.chdir('/')
os.setsid()
os.umask(0)
pid = os.fork()
print 'Daemon PID %d' % pid
os._exit(0)
except OSError, error:
print 'fork #2 failed: %d (%s)' %
(error.errno, error.strerror)
os._exit(1)
# 重定向标准IO
sys.stdout.flush()
sys.stderr.flush()
si = file("/dev/null",
so = file("/dev/null", 'a+')
se = file("/dev/null", 'a+',
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(),
sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
# 在子进程中执行代码
funzioneDemo() # function demo
if __name__ == '__main__':
if platform.system() ==
createDaemon()
os._exit(0)
通过upstart方式实现
可以通过upstart把应用封装成系统服务,这里直接记录下完整示例。
1、编写python脚本
[root@local t27]# cat
test123.py
#!/usr/bin/env python
import os,time
while True :
print time.time()
time.sleep(1)
2、编写upstat配置文件
[root@local t27]# cat
/etc/init/mikeTest.conf
description "My test"
author "Mike_"
start on runlevel [234]
stop on runlevel [0156]
chdir /test/t27
/test/t27/test123.py
3、重新加载upstate
reload-configuration
4、启动服务
[root@local t27]# start
mikeTest start/running, process 6635
[root@local t27]# ps aux |
grep test123.py
0:00 python /test/t27/test123.py
0.0 103212
test123.py
5、停止服务
[root@local t27]# stop mikeTest
stop/waiting
[root@local t27]# ps aux | grep test123.py
0.0 103212
0:00 grep test123.py
[root@local
通过bash脚本实现
1、python代码
[root@local test]# cat
test123.py
#!/usr/bin/env python
import os,time
while True :
print time.time()
time.sleep(1)
2、编写启动脚本
[root@local test]# cat start.sh
python test123.py &
3、启动进程
[root@local
test]#./start.sh
如果直接用&启动进程:
python test123.py
直接关闭ssh终端会导致进程退出。
通过screen、tmux等方式实现
如果临时跑程序的话,可以通过screen、tmux启动程序,这里描述下tmux启动的方式。
1、启动tmux
在终端输入tmux即可启动
2、在tmux中启动程序
直接执行如下命令即可(脚本参考上面的): python test123.py
3、直接关闭ssh终端(比如putty上的关闭按钮);
4、重新ssh上去之后,执行如下命令:
现在可以看到python程序还在正常执行。
windows下后台运行
在windows下没有深入的研究过,我经常用的方法是修改python脚本的扩展名为".pyw",双击即可后台运行,不需要修改任何代码。Sina Visitor System

我要回帖

更多关于 mac终端进入编辑模式 的文章

 

随机推荐