服务器后台运行程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器后台运行程序相关的知识,希望对你有一定的参考价值。

参考技术A SSH 或者telent 远程登录到Linux 服务器,运行一些需要很长时间才能完成的任务。因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

nohup:不挂断的运行命令
&:放在后台运行

jobs:查看当前终端运行的后台进程
ps -ef:进程查看命令

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

screen常见命令:

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

ps:创建screen时,用S,不是s
pps:创建screen之前最好退出anaconda创建的虚拟环境,在base环境创建。不然会出现丢包和进错虚拟环境的问题。

如何同时运行后台服务应用程序和 UIApplication

【中文标题】如何同时运行后台服务应用程序和 UIApplication【英文标题】:How can run background service application and UIApplication same time 【发布时间】:2011-04-24 09:42:44 【问题描述】:

我想同时运行后台服务应用程序和 UIApplication。

是否可以在同一个项目中创建两者或需要创建单独的单独项目。

实际上我对如何在事件线程中调用或启动后台服务感到困惑。

【问题讨论】:

【参考方案1】:

您可以通过以下方式为您的应用程序设置备用入口点:

A- 使用 BlackBerry® Java® Plug-in for Eclipse®

为原始应用程序创建项目后,创建一个备用入口点以启动应用程序 UI。

1- 双击项目中的 BlackBerry_App_Descriptor.xml。 2- 勾选系统模块,不要在黑莓主屏幕上显示应用程序图标。 3-单击备用入口点选项卡。 4- 单击添加按钮。 5- 输入入口点的标题,然后单击“确定”。 6- 指定将使用此备用入口点启动应用程序的应用程序参数(例如:gui)。 7- 继续“常用步骤”部分。 8- 修改原项目的main()方法如下:

public static void main(String[] args) 
     if ( args != null && args.length > 0 && args[0].equals("gui") )
          // code to initialize the app
          theApp.enterEventDispatcher();
      else 
          // code to launch the background thread 
     

B- 使用 BlackBerry JDE

为原始应用程序创建项目后,您必须为 UI 入口点创建另一个项目。假设要运行的线程与原始应用程序存在于同一个项目中,请按以下步骤操作:

1- 右键单击​​项目节点并选择属性。 2- 在“属性”窗口中,选择“应用程序”选项卡。 3- 验证是否选中了以下选项:启动时自动运行和系统模块(向系统注册线程)。 4- 在与原始项目相同的文件夹下创建另一个项目。右键单击新项目节点并选择属性。 5- 选择应用程序选项卡,然后从项目类型下拉列表中选择备用 CLDC 应用程序入口点。如附件所示,从 Alternate entry point for 下拉列表中选择原始项目的名称(例如,trafficreporter)。还要指定将使用此备用入口点启动应用程序的参数(例如:gui)。 继续执行通用步骤部分。 6- 修改原项目的main()方法如下:

public static void main(String[] args) 
     if ( args != null && args.length > 0 && args[0].equals("gui") )
          // code to initialize the app
          theApp.enterEventDispatcher();
      else 
          // code to launch the background thread 
     

【讨论】:

感谢 Ashraf,但我想从事件线程调用后台服务。是否可以?如果是,请告诉我怎么做? 使用 UiApplication.requestForeground() .....如果这些答案对您有帮助,请标记并检查为答案 @AshrafBashir。可爱的解释。 @AshrafBashir 谢谢。不错的回答我的应用程序运行良好,但我无法显示应用程序图标?我们怎样才能做到这一点? 我必须运行两个后台应用程序。我应该如何运行?@AshrafBashir【参考方案2】:

http://supportforums.blackberry.com/t5/Java-Development/Background-thread-for-push-notifications/td-p/563071

Blackberry 开发者论坛充满了主题和示例代码来完成这件事。

就个人而言,我使用备用入口点方法,将后台应用程序作为自动启动 UiApplication(没有图标)运行,它从不推送 MainScreen,但使用自己的调度线程抛出对话框或类似通知,然后当实际的主页图标被按下/单击,我启动 Ui 入口点与用户一起玩。

【讨论】:

谢谢 dan,但我想从事件线程调用后台服务。是否可以?如果是,请告诉我怎么做? 有两种方法可以做到这一点---方法1.创建一个包含UI和后台监听器的应用程序,并覆盖close()方法,只在后台运行——它从不调用System.exit() 换句话说。这可以完成所有的处理和 UI,并且元素之间的通信相当简单。实现可能很痛苦,因为您需要在任何地方请求背景。 ---方法2:我使用上述的替代进入方法,并在启动时将我的autorun Singleton监听器(使用RuntimeStore Singleton)的引用传递到UI应用程序中。 嗨,丹,你能展示如何做到这一点的完整代码示例吗?我需要从 UI 应用程序安装服务应用程序,请告诉我该怎么做? 关注我的回答中的主题,它解释了很多理论,并指向其他主题以获得更多示例/理论。我没有时间为任何人复制/粘贴代码,我几乎没有时间在这里 atm 冲浪 :)

以上是关于服务器后台运行程序的主要内容,如果未能解决你的问题,请参考以下文章

screen后台运行程序

当应用程序后台运行时,Objective-c 长时间运行的蓝牙后台服务

如何同时运行后台服务应用程序和 UIApplication

手机和电脑的后台程序是否与前台程序同时运行 只是被前台覆盖了

如何始终在后台运行服务?

在后台永远运行Swift 2.0应用程序以更新服务器的位置