精华内容
下载资源
问答
  • 问题描述 我打好的jar包,放在服务器上之后,在windows里面用xshell打开一个连接,然后运行...后当前连接被锁定,也就是说,你的连接的线程当前的状态会影响程序的执行,比如你按了CTRL+C命令程序退出,还有关闭你的
    问题描述
    我打好的jar包,放在服务器上之后,在windows里面用xshell打开一个连接,然后运行java -jar 。。。。执行这个jar文件,当我关闭这个链接的时候为什么程序停止了呢?

    打开XShell连接并运行
    java -jar  XX.jar 
    后当前的连接被锁定,也就是说,你的连接的线程当前的状态会影响程序的执行,比如你按了CTRL+C命令程序退出,还有关闭你的连接那么程序也会结束。

    怎么解决?

    后台启动程序
    java -jar XXX.jar &
    当前窗口不被锁定,输出的日志会显示在屏幕上,当关闭窗口的时候,实验之后并不会停止执行。

    方式2
    nohup 不挂断运行的命令,当终端或者账户关闭的时候,程序依旧运行。
    当前的命令默认会把日志输出到nohup.out文件中
    nohup java -jar XXX.jar &
    指定输出文件
    nohup java -jar XXX.jar >log.out &

    查看后台启动命令
    jobs
    显示后台运行的程序。每个作业前面都有一个作业的编号。

    调回前台控制
    fg + 编号







    展开全文
  • Linux打开文件限制

    千次阅读 2018-05-16 15:59:06
    Linux打开文件限制1、修改用户进程可打开文件数限制在linux平台上,无论是客户端程序还是服务器端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为...

    Linux打开文件限制

    1、修改用户进程可打开文件数限制

    在linux平台上,无论是客户端程序还是服务器端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

    可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:

    ~]# ulimit -n
    1024
    

    这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中还得除去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听socket,进程间通信的unix与socket等文件,那么剩下的可用于客户端socket连接的文件数就只有大概1024-10=1014个左右,也就是说缺省情况下,基于linux的通信程序最多允许同时1014个tcp并发连接。

    修改上述限制的最简单的办法就是使用ulimit命令:

    ~]# ulimit -n <file-num>
    

    上述命令中,在<file-num>中指定要设置的单一进程允许打开的最大文件数,如果系统回复类似“operation notpermitted"之类的话,说明上述限制修改失败,实际上是因为在<file-num>中指定的数值超过了linux系统对该用户打开文件数的软限制或硬限制,因此,就需要修改linux系统对用户关于打开文件数的软限制和硬限制。

    第一步,修改/etc/security/limits.conf文件,在文件中添加如下:

    speng soft nofile 10240
    speng hard nofile 10240
    

    其中speng指定了要修改哪个用户的打开文件数限制,可用'*'号表示修改所有用户的限制,soft或hard指定要修改软限制还是硬限制,10240则指定了想要修改的新的限制值,即最大打开文件数(软限制应该要小于硬限制,软限制即表示阀值,超过会产生告警),修改完后保存文件。

    第二步,修改/etc/pam.d/login文件,在文件中添加如下行:

    session required /lib/security/pam_limits.so
    

    这是告诉linux在用户完成系统登陆后,应该调用pam__limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值,修改后保存到此文件。

    第三步,查看linux系统级的最大打开文件数限制,使用如下命令:

    ~]# cat /proc/sys/fs/file-max
    184289
    ~]# cat /proc/sys/fs/file-nr
    1024    0   184289     
    已分配文件句柄的数目    分配了但没有使用的句柄数   文件句柄最大数目
    

    这表明这台linux系统最多允许同时打开(即包含所有用户打开文件数总和)184289个文件,是linux系统硬件级限制,所有用户级的打开文件数限制都不应超过这个数值,通常这个系统级硬限制是linux系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制,如果没有特殊,不应该修改此限制,除非想为用户级打开文件数限制设置超过此限制的值,修改此硬限制的方法是修改/etc/rc.local脚本,在脚本中添加如下行:

    echo 284289 > /proc/sys/fs/file-max
    

    这是让linux在启动完成后强行将系统级打开文件数硬限制设置为284289,修改完后保存此文件。

    完成上述步骤重启系统,一般情况下就可以将linux系统对指定用户的单一进程允许同时打开的最大文件数限制设为指定的数值,如果重启后用ulimit -n命令查看用户可打开文件数限制仍然低于上述步骤中设置的最大值,这可能是因为在用户登陆脚本/etc/profile中使用ulimit -n命令将用户可同时打开的文件数做了限制,由于通过ulimit -n修改系统对用户可同时打开文件的最大限制时,新修改的值只能小于或等于上次ulimit -n设置的值,因此想用此命令增大这个限制值,是不可能的,所以,如果上述问题存在,就只能去打开/etc/profile脚本文件,在文件中查找使用使用ulimit -n限制了用户可同时打开的最大文件数量,删除此命令,或将其修改成合适的值,保存文件,用户退出并重新登陆系统即可。

    通过上述步骤,就为了支持高并发TCP连接处理的通信处理程序解除关于打开文件数量方面的系统限制。

    2、修改网络内核对TCP连接的有关限制

    在linux上,有时会发现尽管已经解除雷人系统对用户同时打开文件数的限制,但仍会出现并发TCP连接数增加到一定数量时,在也无法成功建立新的TCP连接的现象,出现这种情况的原因有很多。

    第一种原因可能是因为linux网络内核对本地端口号范围有限制,此时进一步分析为什么无法建立TCP连接,会发现问题出在connect()调用返回失败,查看系统错误提示"can't assign requestedaddress",同时如果在此时用tcpdump工具监视网络,会发现根本没有tcp连接时客户端发syn包的网络流量,这些情况说明问题在于本地linux系统内核中有限制,其实问题的根本原因在于linux内核的TCP/IP协议实现模块对系统中所有客户端TCP连接对应的本地端口号的范围进行了限制,(内核限制本地端口号范围1024~32768之间),当系统中某一时刻存在太多的tcp客户端连接时,由于每个tcp客户端连接都要占用一个唯一的本地端口,(此端口号在系统的本地端口范围限制中),如果现有的tcp客户端连接已将所有的本地端口占满,则此时就无法为新的TCP客户端连接分配一个本地端口号了,因此系统会在这种情况下在connect()调用中返回失败,并将错误信息提示"can't assign requestedaddress",有关这些控制逻辑可以查看linux内核源代码,以2.6版本为例,可以查看tcp_ipv4.c文件中如下函数:

    static int tcp_v4_hash_connect(struct sock *sk)
    

    =====

    内核在编译时默认设置的本地端口号范围可能太小,因此需要修改此本地端口号范围限制
    第一步,修改/etc/sysctl.conf文件,在文件中添加如下行:

    net.ipv4.ip_local_port_range = 1024 65000
    

    这表明将系统对本地端口范围限制为1024~65000之间,请注意,本地端口号范围的最小值必须大于等于1024,而端口号范围的最大值则应小于等于65535,修改完成后保存此文件。

    第二步,执行sysctl命令:

    ~]# sysctl -p
    

    如果系统没有错误提示,就表面新的本地端口范围设置成功,则理论上单独一个进程最多可以同事建立60000多个TCP客户端连接。

    第二种无法建立TCP连接的原因可能是因为linux网络内额的iptable(netfilter)防火墙对最大跟踪的TCP连接数有限制,此时程序表现为connect()调用中阻塞,如同死机,由于iptable防火墙在内核中会对每个TCP连接的状态进行跟踪,跟踪信息将会放在位于内核内存中的conntrackdatabase中,这个数据库大小有限制,当系统中存在过多的TCP连接时,数据库容量不足,iptable无法为新的TCP连接建立跟踪信息,于是表现为connect()调用中阻塞,此时就必须修改内核对最大跟踪TCP连接数的限制,方法同修改内核对本地端口号范围的限制是类似的,

    第一步,修改/etc/sysctl.conf文件,在文件中添加如下行:

    net.ipv4.ip_conntrack_max = 10240
    

    这表明将系统对最大跟踪的TCP连接数限制设置为10240,请注意此值要尽量小,节省对内核内存的占用

    第二步,执行sysctl命令:

    ~]# sysctl -p     
    

    sysctl -p 报错net.ipv4.ip_conntrack_max" is an unknown key 则:modprobe ip_conntrack



    作者:词穷又词贫
    链接:https://www.jianshu.com/p/ad2754432a4b
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    展开全文
  • 由于产品需求,高并发不断创建socket短连接来...linux和mac默认最大打开文件数256.上限是65535.在创建socket连接时,每个连接需要占用一个文件打开,所以256是远不能满足需求的。需要进行参数修改。另外,linux系统的最
    • 由于产品需求,高并发不断创建socket短连接来仿http请求。使用java socket来实现,在centos6.5系统上运行。过程中遇到不到的坑,最头疼的就是最大打开文件数和socket可用端口限制的问题。
    • linux和mac默认最大打开文件数256.上限是65535.在创建socket连接时,每个连接需要占用一个文件打开,所以256是远不能满足需求的。需要进行参数修改。
    • 另外,linux系统的最大可用socket端口也是65535.默认1024.最好设置为1024-65535端口可用。并且,设置linux内核参数,控制socket端口复用和快速释放。在开发过程中,会遇到大量socket处于time_wait状态而不释放的问题。当然,尽管内核最优且端口数设置为最高,仍然会有极限承受力。如果每个请求的响应时间为毫秒级,比如200并发创建,每个线程中2ms的时间便可请求响应完成,立即循环创建下一个,那么端口还是会被吃尽。端口释放速度小于需求速度时,系统将会报错,没有可用端口。
    展开全文
  • linux监控打开文件

    2019-08-01 11:48:15
    Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个...

    在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

    查看当前系统打开的文件数量

    lsof | wc -l
    watch "lsof | wc -l"

    查看某一进程的打开文件数量

    lsof -p pid | wc -l 
    lsof -p 1234 | wc -l

     注意1:一定要用lsof -p pid去查询,如果用lsof |grep pid | wc -l.不仅会超级慢,还会发现数值要大很多,这个大的值不是打开的文件数。

    eg:

    lsof具体详解,可参考如下:https://www.cnblogs.com/sparkbj/p/7161669.html

    注意2:netsat查看端口号然后wc -l,统计的也不是打开的文件数

    展开全文
  • Linux单进程打开文件句柄数上限

    万次阅读 2016-04-26 10:53:31
    ulimit 查看系统的文件相关限制单个进程最多允许打开的文件句柄数(包括socket连接数)是有限制的,当大于这个系统限制时,程序会抛出大量的无法打开文件的报错。
  • linux 查看MySQL的当前连接

    千次阅读 2015-01-30 00:36:07
    查看最大连接数 mysqladmin -uroot -p ...或者是登录到mysql客户端后,使用status命令也能获得thread连接数以及当前连接的id。 [root@localhost bin]# mysql -h localhost -u root -p123456 Welcome to th
  • 1. 概述  在Linux系统中一切皆可以看成是文件文件又可分为:普通文件...文件描述符(file descriptor)是内核为了高效管理打开文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开文件
  • linux系统中打开文件数量的查看方法

    万次阅读 2012-09-06 14:03:04
    linux系统中打开文件数量的查看方法  2012-09-06 10:38:19| 分类: RHCA_442 |字号 订阅 Redhat技术交流QQ群Redhat_CN(217245629) ulimit -n 4096  也就是限制用户的最大文件打开数为4096个 ...
  • 1. 查询当前数量: ulimit -n 2.修改/etc/security/limits.conf文件,在文件中添加如下行: [user] soft nofile 10240 [user] hard nofile 10240 user表示用户名, 如root 3.修改/etc/pam.d/login文件,在文件中...
  • Linux打开当前路径图形化窗口

    千次阅读 2017-07-02 12:03:29
    nautilus # 当前路径 nautilus ./ # 指定路径 nautilus /xx/xxx/xx/
  • linux 下查看mysql当前连接

    千次阅读 2013-05-24 14:43:54
    【转】linux下查看MYSQL的当前连接数 查看最大连接数 mysqladmin -uroot -p processlist 一般来说提示的thread数目就是当前连接数 或者是登录到mysql客户端后,使用status命令也能获得thread连接数以及当前...
  • 【最大连接数】Linux文件最大连接数 查看当前操作系统连接数设置 ulimit -a ==================================== 修改服务器最大连接数 vim /etc/security/limits.conf 添加 * ...
  • 修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...
  • 有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。 fuser ...
  • Linux如何查看文件打开情况

    千次阅读 2020-03-07 17:45:00
    而lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)等。 lsof可以打开哪些文件 1、普通文件 2、目录 3、网络文件系统的文件 4、字符或设备文件 5、共享库 6、管道、命名管道 7、符号...
  • Linux下用vi 打开文件出现乱码

    千次阅读 2013-01-12 20:20:12
    环境   RedHat Linux 9 + VWWare 8.0 + SSH ... Linux下用vi 打开文件出现乱码   解决   强烈推荐参考此文:Putty远程连接Linux服务器出现乱码解决   执行LANG=zh_CN.utf-8修改当前环境语言常量。   参考资料
  • 设置linux最大文件打开数量

    万次阅读 2012-08-02 14:25:43
    ----------结论-------------------- ...// 文件数 echo "fs.file-max = 65535" >> /etc/sysctl.conf  // tcp 连接数 echo "* - nofile 65535" >> /etc/security/limits.conf sysctl -p
  • lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 ...
  • Linux 虚拟文件系统二MountOpen设备文件挂载和打开文件 梗概 挂载 设备文件 设备文件从哪里来的 挂载做了什么 打开文件 打开文件和挂载的巧妙结合 打开文件实际情况 请结合Linux内核情景分析 声明 ...
  • Linux打开文件数量的限制

    千次阅读 2018-09-26 15:26:08
    做高并发服务器或者像聊天这种长连接服务时,需要修改系统能够打开文件句柄数。否则会出现 too many open files 的错误。socket句柄和文件句柄是相同的,像聊天这种长链接服务,此时too many open files 指的就是...
  • linux打开文件数量的查看方法

    千次阅读 2013-09-12 09:52:41
    linux打开文件数量的查看方法 在网上查到两种查看linux打开文件数量的查看方法,但结果不相同,linux查看文件打开数量是以那个文件或命令为标准呢? 搜索过关于ulimit命令的一些用法,其中有 ulimit -n...
  •  也就是限制用户的最大文件打开数为4096个  在网上查了关于怎么查看文件打开数的文章大致有两种说法  /proc/sys/fs/file-nr  该文件与 file-max 相关,它有三个值:  分配文件句柄的数目  使用文件...
  • Windows和Linux查看和更改mysql连接

    千次阅读 2017-05-22 12:28:42
    Windows和Linux查看和更改mysql连接池。Windows方便修改,Linux则需要更改配置mysqld_safe文件
  • 在运行某些命令或者 tomcat等...查看每个用户最大允许打开文件数量ulimit -a其中 open files (-n) 8192 表示每个用户最大允许打开的文件数量是8192 。 默认是1024。1024很容易不够用。查看当前系统打开的文件数量l
  • Linux操作系统中打开文件数量的查看方法 Linux操作系统中打开文件数量的查看方法 - 心灵捕手 - 博客园 https://www.cnblogs.com/Dennis-mi/articles/6084581.html ulimit -n 4096 也就是限制用户的最大文件打开...
  • 首先检查Linux系统中zookeeper是否开启 //需要进入zookeeper文件里找到zkServer //查看是否开启 ./zkServer status 如果没有开启 ./zkServer start 可能二 看看maven项目中的的配置文件是否正确 <!-- 当前应用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 228,878
精华内容 91,551
关键字:

linux当前已打开的文件连接

linux 订阅