后台运行_后台运行脚本 - CSDN
精华内容
参与话题
  • Java -jar 如何在后台运行项目

    万次阅读 多人点赞 2019-12-10 10:09:05
    说到运行jar包通常我们都会以下面的方式运行: ...这样运行的话会有一个问题,就是我们一关闭当前窗口就会停止运行项目,要想解决这个问题,就需要在后台运行。 [root@iZ2zei8ft0h4q485kxwxjgZ babysh...

    说到运行jar包通常我们都会以下面的方式运行:
     

    [root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# java -jar babyshark-0.0.1-SNAPSHOT.jar

    这样运行的话会有一个问题,就是我们一关闭当前窗口就会停止运行项目,要想解决这个问题,就需要在后台运行。

    [root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# nohup java -jar babyshark-0.0.1-SNAPSHOT.jar  > log.file  2>&1 &
    

    上面的2 和 1 的意思如下:

    0    标准输入(一般是键盘)
    1    标准输出(一般是显示屏,是用户终端控制台)
    2    标准错误(错误信息输出)

    将运行的jar 错误日志信息输出到log.file文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。

    [root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# nohup java -jar babyshark-0.0.1-SNAPSHOT.jar  > log.file  2>&1 &
    [1] 669
    

    669就表示运行的pid,netstat -anp可以查看到。

    要想停止后台的进程的话,如下:

    接着,直接 kill -9 669(pid) 即可

     

     

     

     

    展开全文
  • Linux 下后台运行程序,查看和关闭后台运行程序

    万次阅读 多人点赞 2017-06-30 16:24:38
    直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。 (1)&命令  功能:加在一个命令的最后,可以把这个命令放在后台执行 (2)nohup命令  功能:不挂断...

    1、运行.sh文件

    直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。

    (1)&命令

              功能:加在一个命令的最后,可以把这个命令放在后台执行

    (2)nohup命令

              功能:不挂断的运行命令

            

    2、查看当前后台运行的命令

    有两个命令可以用,jobs和ps,区别是jobs用于查看当前终端后台运行的任务,换了终端就看不到了。而ps命令用于查看瞬间进程的动态,可以看到别的终端运行的后台进程。

    (1)jobs命令

            功能:查看当前终端后台运行的任务

           

           jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。

    (2)ps命令

              功能:查看当前的所有进程

              

             ps -aux | grep "test.sh"    #a:显示所有程序  u:以用户为主的格式来显示   x:显示所有程序,不以终端机来区分


    3、关闭当前后台运行的命令

          kill命令:结束进程

         (1)通过jobs命令查看jobnum,然后执行   kill %jobnum

         (2)通过ps命令查看进程号PID,然后执行  kill %PID

           如果是前台进程的话,直接执行 Ctrl+c 就可以终止了


    4、前后台进程的切换与控制

         (1)fg命令

           功能:将后台中的命令调至前台继续运行

           如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。

         (2)Ctrl + z 命令

           功能:将一个正在前台执行的命令放到后台,并且处于暂停状态

         (3)bg命令

           功能:将一个在后台暂停的命令,变成在后台继续执行

           如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。



             



    展开全文
  • 正常情况下,使用应用时,当用户按下home键,APP便被挂起(线程和runloop都会暂时挂起),但是依然驻留在内存中,这种状态下,如果不使用苹果允许的那几种一直在后台运行的方法(如播放音乐、定位等),程序便会被挂起,...

    正常情况下,使用应用时,当用户按下home键,APP便被挂起(线程和runloop都会暂时挂起),但是依然驻留在内存中,这种状态下,如果不使用苹果允许的那几种一直在后台运行的方法(如播放音乐、定位等),程序便会被挂起,当然还有一种向系统申请延时挂起的方法,但是这种方法最多在后台运行10分钟,10分钟之后还是会被挂起。在后台运行的APP,如果当前系统内存将要不够用时,系统会自动把之前挂起状态下的APP清出内存。所以我们看到,有些时候打开APP时,还是上次退出时的那个页面那些数据,有时则是重新进入的。

     

    iOS应用的运行状态分为以下五种:


    1、Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。


    2、Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户去响应某些(诸如电话来电、有未读短信等)事件的时候。


    3、Active:当前应用正在前台运行,并且接收事件。这是应用正在前台运行时所处的正常状态。


    4、Suspended:应用处在后台,并且已停止执行代码。系统自动的将应用移入此状态,且在此举之前不会对应用做任何通知。当处在此状态时,应用依然驻留内存但不执行任何程序代码。当系统发生低内存告警时,系统将会将处于 Suspended 状态的应用清除出内存以为正在前台运行的应用提供足够的内存。


    5、Background:应用处在后台,并且还在执行代码。一般的应用,都只会在这个状态短暂停留(最多十分钟),然后就会被系统强制进入 Suspended 状态。而 iOS 为了在某些情况下提供更好的体验,提供了一些选项,只要满足这些选项的条件,就可以在后台运行很长的一段时间。

     

    iOS 应用状态切换示意图

     

    iOS 提供的后台运行方式

    iOS 提供的后台运行方式列表

    上图为 iOS 提供的后台运行方式列表,如果需要,可在 Xcode 的项目设置中开启对应的选项。App Store 的审核人员会检查应用中是否有必要开启该后台运行模式选项,如果应用中不需要,而又开启了这个选项,可能会被拒。        

    Audio, AirPlay and Picture in Picture

    此个选项包含四种场景,分别是:音频的播放,录音,AirPlay 及画中画的视频播放。
    音频的播放:在播放音频时,即使应用退到后台,只要一直有音频在播放,那应用就可以一直在后台运行。
    代码实现可参考:http://www.linuxidc.com/Linux/2012-08/68364.htm

    录音:应用可以请求使用麦克风,而当开启了此后台选项,应用在使用麦克风的时候,即使退到后台,也可以一直后台运行,通过查看微信安装包中的 plist 文件,微信的语音聊天,就是通过这种方式实现的。而当该类应用退到后台后,iOS 系统的状态栏会变成红色,并在状态栏中显示正在使用麦克风的应用的名称,如下图所示。

    正在使用麦克风提示

    AirPlay:AirPlay 是指将 iOS 设备,或者 Mac 设备上的音视频,同步到另一个设备中播放。举两个例子,第一个是把 iPhone 上的音乐通过蓝牙的方式在汽车的蓝牙音响播放,第二个是把 iPhone 上的视频,同步到智能电视屏幕上播放。此功能一般用于多端及多屏的交互。
    关于 AirPlay 的开发文档:http://nto.github.io/AirPlay.html

    画中画的视频播放:画中画是 iPad 版本的 iOS 9 新增加的功能,可以在 iOS 的桌面,或者其他应用的界面的上面播放视频,从而该视频区域所属的应用就可以后台运行了。此功能现在只在 iPad 应用中提供
    代码实现可参考:http://www.cocoachina.com/ios/20150714/12558.html

    Location updates

    一般用于导航应用中,开启此选项后,应用退到后台,还可以得到系统的定位更新,从而使得应用可以根据定位的变化做出不同的反应。
    代码实现可参考:https://github.com/voyage11/Location

    Voice over IP

    VOIP 类的应用允许用户使用网络而不是手机打电话,因此这一类的应用需要保持同它相关的服务的网络连接,用以收到来电事件和其他数据。iOS 不是通过一直让该应用处于激活状态来达到这个目的,而是同样也会将这类的应用挂起,但同时会在应用被挂起期间由系统接管它的 VOIP 的 Socket当这个 Socket 有数据通信时系统会再次唤醒处于挂起状态的应用,同时将 Socket 的控制权交还给该应用,以让其正常的处理来电事件和其他数据。 

    Newsstand downloads

    在 iOS 开发中,有一类叫报刊杂志类应用比较特别,在 iOS 9 之前的系统中,此类应用会统一收在系统内置的「报刊杂志」应用中,在 iOS 9 中则去掉了内置的「报刊杂志」应用,此类应用得以以单独的图标入口出现在桌面中。
    此后台运行的选项就是提供给报刊杂志类应用可以在后台下载及处理报刊杂志内容,而下载的过程需要使用 NewsstandKit 中的 NKAssetDownload 进行下载。需要注意的是,下载的过程中应用可能还是会被挂起甚至应用被退出,而 iOS 会在 Wi-Fi 环境下继续下载,直到下载完成。而一旦下载完成,如果应用只是被挂起,则 iOS 会唤醒对应的应用,回调对应的事件;如果应用已经退出则会启动应用,在启动参数中会带上对应的标识表示这次启动是因为下载报刊杂志内容完成。
    代码实现可参考:http://www.viggiosoft.com/blog/blog/2011/10/17/ios-newsstand-tutorial/ 

    External Accessory communication

    此选项提供给一些 MFi 外设通过蓝牙,或者 Lightning 接头等方式与 iOS 设备连接,从而可在外设发送消息时,唤醒已经被挂起的应用。而一旦被唤醒,一般情况下, 应用只有最多 10 秒钟的执行时间。
    MFi 外设:是指通过苹果 MFi 认证的设备,而 MFi 认证是对其授权配件厂商生产的外置配件的一种标识使用许可,是 Made for iOS 的英文缩写。

    Uses Bluetooth LE accessories

    此选项与 External Accessory communication 类似,只是此选项无需限制 MFi 外设,而需要的是 Bluetooth LE 设备。

    Acts as a Bluetooth LE accessory

    此选项是指 iOS 设备作为一个蓝牙外设连接时,对应的应用可以后台运行,但是使用此模式需要用户进行授权认证。

    Background fetch 

    iOS 7 新增加的一个选项,用于即使在后台,也需要频繁更新数据的应用。例如一个 PM2.5 的应用,需要几个小时更新一次数据,那么可以开启此选项,设置一个时间间隔,从而让 iOS 在间隔时间内在后台启动该应用,执行指定数据的获取工作,而此过程最多只能执行 30 秒钟。
    代码实现可参考:http://objccn.io/issue-5-5/

    Remote notifications

    iOS 7 新增加的一个选项,是一种静默推送,它有别于一般的推送,应用收到此类推送后,不会有任何的界面提示,而当应用退出或者挂起时收到此类推送,iOS 也会启动或者唤醒对应的应用。
    例如一个阅读应用,用户订阅的博客更新了,那么可以先发一个静默推送,应用收到此种推送后,可以先把用户订阅的博客内容都下载好,再通知用户,这样用户一打开应用就可以马上开始阅读。
    收到静默推送,会回调对应的回调方法,而此回调方法最多只能执行 30 秒钟。
    代码实现可参考:http://objccn.io/issue-5-5/

    基于 NSURLSession 的后台传输

    此为 iOS 7 新增加的特性,用于在后台下载或者上传大文件,步骤如下:创建后台传输用的 NSURLSession 对象;向这个对象中加入对应的传输的 NSURLSessionTask,并开始传输;在实现 AppDelegate 里实现 -application:handleEventsForBackgroundURLSession:completionHandler: 方法,以刷新 UI 及通知系统传输结束。
    一旦后台传输的状态发生变化(包括正常结束和失败)的时候,应用将被唤醒并运行 AppDelegate 中的回调。
    但是也有一些限制,后台传输只会通过 Wi-Fi 来进行。后台下载的时间与以前的关闭应用后X分钟的模式不一样,而是为了节省电力变为离散式的下载。
    代码实现可以参考:http://onevcat.com/2013/08/ios7-background-multitask/

     

    一些比较巧的后台运行的方法,也就是“伪后台”

    一直循环播放一段没声音的音频

    可以在后台选项中选择「Audio, AirPlay and Picture in Picture」,而开始循环播放一段是没声音的音频,即在 Audio Unit 回调函数中使用 kAudioUnitRenderAction_OutputIsSilence 标志位,但是这种方式两个大的缺点:
    1. 苹果的审核人员如果发现,会被拒;
    2. 应用程序的 Audio Session 不能被打断。当应用执行在后台时,只要另一个应用使用 kAudioSessionCategory_RecordAndPlay (比如 Skype)或者 kAudioSessionCategory_SoloAmbientSound,那么该应用就会被立即打断。
    代码实现可参考:https://github.com/marcop/MMPDeepSleepPreventer

    参考:https://www.jianshu.com/p/d62c6d3ae8ff

     

    越狱下开发 System 级别的应用

    一般的应用都是 Mobile 级别的,在越狱的情况下,可以开发一个 System 级别的应用,从而使得应用不受 iOS 一般应用的限制,实现真正的后台运行,但是缺点就是应用只能运行在越狱设备上,也不能上 App Store。
    代码实现可参考:http://www.cnblogs.com/doudouyoutang/p/4712331.html

    参考:https://www.jianshu.com/p/d3e279de2e32

    同时这里补充一句,APP切换到后台被挂起,则Runloop也会被挂起,因为Runloop是运行在线程里边的,和线程一一对应。所以,当APP切换到后台之后,类似NSTimer等就不再计时了。

    展开全文
  • nohup和&后台运行,进程查看及终止

    万次阅读 2018-07-13 14:06:12
    1.nohup用途:不挂断地运行命令。语法:nohup Command [ Arg … ] [ & ] 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。 如果当前目录的 nohup.out 文件不可写...

    1.nohup

    用途:不挂断地运行命令。

    语法:nohup Command [ Arg … ] [ & ]

      无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

      如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

      如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

    退出状态:该命令返回下列出口值:   
      126 可以查找但不能调用 Command 参数指定的命令。   
      127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
      否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

    2.&

    用途:在后台运行

    一般两个一起用

    nohup command &

    eg:

    1
    nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &

    进程号7585

    查看运行的后台进程

    (1)jobs -l

    jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

    (2)ps -ef 

    1
    ps -aux|grep chat.js
     a:显示所有程序 
     u:以用户为主的格式来显示 
     x:显示所有程序,不以终端机来区分

    注:

      用ps -def | grep查找进程很方便,最后一行总是会grep自己

      用grep -v参数可以将grep命令排除掉

    1
    ps -aux|grep chat.js| grep -v grep

      再用awk提取一下进程ID 

    1
    ps -aux|grep chat.js| grep -v grep | awk '{print $2}'

    3.如果某个进程起不来,可能是某个端口被占用

    查看使用某端口的进程

    1
    lsof -i:8090

    1
    netstat -ap|grep 8090

    查看到进程id之后,使用netstat命令查看其占用的端口

    1
    netstat -nap|grep 7779

    使用kill杀掉进城后再启动

    4.终止后台运行的进程

    1
    kill -9  进程号



    1.nohup.out的由来及作用

    用途:LINUX命令用法,不挂断地运行命令。

    语法:nohup Command [ Arg … ] [ & ]

    描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

    例子: nohup ./startWeblogic.sh & 意思是即使退出ssh界面,命令仍然在后台执行,并且打印过程日志到nohup.out,当然也可以将nohup.out的输出转向到其他文件,高级应用请参考扩展阅读。

    2.nohup.out的查看方式与方法

    实际使用过程中,往往人们为了省心(嗯,没错,就是懒),经常没有给nohup.out进行重定向输出,也没有按日期分割文件,会造成这个文件特别巨大,达到2G或者3G,这个使用想查看文件,搜索出错内容就比较痛苦了。一般有两种方式

    1.linux本机查看:使用tail 命令,查看最新的日志,或滚动监控日志打印。
    例如命令 tail -1000 nohup.out (查看最后1000行日志文本) tail -f nohup.out(监控日志打印)
    
    2.ftp下载到windown主机查看:一般小的log文件都没有问题,但是过G的,一般的文本文档查看就显得无力了。推荐使用UltraEdit进行打开。
    • 1
    • 2
    • 3
    • 4

    3.nohup.out维护管理方法(清空nohup.out)

    如上文所述出现了超大号的文件简直是令人讨厌的事情,而且nohup.out会一直一直自己增长下去,如果你的服务器硬盘不给力的话,很容易把应用也挂掉(硬盘没空间 ,啥都玩不转),但是又不能一味的直接删。因为直接删除,可能会造成应用无法打印后续的错误日志,该问题常见于weblogic服务器,jboss服务器等这些大型中间件,这个在生产环境上要尤为注意。

    因此就有了我们不停止服务直接,清空nohup.out文件的方法。
    两个可以不用停止WEB服务就可以清空nohup.out的命令。

    第一种:cp /dev/null nohup.out
    第二种:cat /dev/null > nohup.out
    • 1
    • 2

    两个我都用过,不用担心网上所说的性能问题,通常2/3 个G的文件都是1-2秒执行完毕

    4.扩展阅读

    1.nohup的重定向,一劳永逸解决nohup.out文件过大的问题

    以下是定义日志打印级别,除了高于级别2的告警信息记录到log文件外,其余直接不记录

    //只输出错误信息到日志文件
    nohup ./program >/dev/null 2>log &
    //什么信息也不要
    nohup ./program >/dev/null 2>&1 &
    • 1
    • 2
    • 3
    • 4

    2.Linux的3种重定向

    0:表示标准输入
    1:标准输出,在一般使用时,默认的是标准输出
    2:标准错误信息输出
    • 1
    • 2
    • 3

    可以用来指定需要重定向的标准输入或输出。例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

    3.关于/dev/null文件
    Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。


    展开全文
  • 服务器后台自动运行程序和停止

    千次阅读 2018-07-31 16:50:14
    后台运行命令 如何后台运行python程序。 关键的命令:nohup 只需要输入下面的命令就可以在后台一直执行python程序啦 nohup python -u test.py > test.log 2>&1 & 这条命令的...
  • 后台运行程序的几种方式

    千次阅读 2019-05-30 22:52:34
    后台运行程序的几种方式 目录 1. 当前终端后台运行 示例1,使用ctrl z, bg 示例2,使用& 示例3,重定向标准输出和标准错误输出 2. 脱离当前终端运行 示例4,使用nohup,忽略挂起,避免终端关闭...
  • shell 后台执行

    千次阅读 2019-01-14 10:22:37
    让shell脚本在后台飞       1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:.   $ ./my-shell-script.sh &     ...
  • 让 Chrome 在后台运行

    万次阅读 2020-10-15 11:00:40
    如何让谷歌浏览器(google chrome)在后台运行 打开谷歌浏览器(google chrome),点击小编红框标记位置,点击设置: 用鼠标下滑到最底部,点击显示高级设置: 继续滚动鼠标到最底部,勾选 “关闭 google chrome 后...
  • 在linux后台运行脚本的方法和命令

    万次阅读 多人点赞 2018-05-03 18:17:16
    后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台...
  • ngrok 后台运行方法

    万次阅读 2016-11-30 14:22:45
    ngrok 用 & 不能后台运行   这就要使用screen这个命令  首先安装screen  apt-get install screen  之后运行  screen -S 任意名字(例如:keepngork)  然后运行ngrok启动命令 最后那快捷键  ctrl+A+...
  • Python+selenium 技术篇-浏览器后台运行

    万次阅读 2019-02-14 16:32:30
    option=webdriver.ChromeOptions() option.add_argument('headless') #后台运行 driver = webdriver.Chrome(chrome_options=option) # 打开谷歌浏览器
  • Linux后台运行Jar方法

    万次阅读 多人点赞 2018-12-19 13:44:33
    或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台运行呢: 方法一: $ nohup java -jar test.jar &//nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行 //当用 nohup 命令执行作业...
  • Windows下在后台运行jar包

    万次阅读 2018-10-21 10:28:31
    新建一个bat文件,输入: ...执行这个批处理程序就可以在后台运行jar包了 注意: balabala只是一个名字,可以随便定义。 写个停止脚本 stop.bat 内容如下 @echo off taskkill /f /im balabala.exe exit ...
  • docker 容器后台运行

    万次阅读 2017-11-07 19:41:50
    容器后台运行问题想要后台启动容器进行调试方案一docker run -d <image_name> tail -f /dev/null方案二docker run -i -t <image_name> [command]然后Ctrl+P+Q即可退出控制台,但是容器没有退出,可使用命令查看: ...
  • unity3d程序后台运行设置

    千次阅读 2018-06-20 10:37:49
  • node.js 后台运行方法

    万次阅读 2016-10-27 16:41:40
    node.js后台运行方法 一、nohup node ***.js & node.js自带服务nohub,不需要安装别的包。 缺点:存在无法查询日志等问题 二、forever forever能做更多的事情,比如分别记录输出和错误日志,宕机重启,热部署。...
  • ubuntu 后台运行的几种方法!

    万次阅读 2018-05-31 19:13:17
    第一种:使用 “nohup”,即 &...运行状态可以用 “jobs -l” 来查看。 第二种:使用 “setsid” 即 “setsid ./test.sh” 。 第三种:最简单,将命令放入括号当中,比如说:(./test &amp;),这样就行了。...
  • Python脚本在Windows下后台运行

    万次阅读 2017-11-20 21:46:26
    查了一下,可以用start /b python xxx.py后台运行, 这招虽然不影响cmd操作,但是关闭cmd窗口后服务也死了 解决这个问题挺麻烦的,需要以Windows服务的方式挂起来 第一步,将Python脚本打包成exe可执行文件...
  • 启动jar包命令,可后台运行

    万次阅读 2018-05-17 11:02:55
    启动jar,将jar在后台运行,并且记录jar的pid : nohup java -jar test.jar &amp;3.查看运行的jar的pid,看看jar程序是否运行:ps -ef|grep java4.如果文件过大,可在不停止jar包的情况下清空日志文件:用命令 cp ...
  • android 实现退出app仍然在后台运行

    万次阅读 2018-08-22 17:39:13
    @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(false); return true; } retu...
1 2 3 4 5 ... 20
收藏数 722,718
精华内容 289,087
关键字:

后台运行