今天遇到一个问题,有个用户连接不上服务器(无法ssh远程连接)

su: failed to execute /bin/bash: Resource temporarily unavailable

谷歌搜索一番后:

原因:用户最大进程数参数(nproc)已经达到最大值,无法再给要执行的/bin/bash 分配空闲资源,无法执行/bin/bash就代表你什么也做不了。

linux 下这个文件限定了用户进程数(文件名可能不一样,目录应该不差):

/etc/security/limits.d/20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

* soft nproc 4096
root soft nproc unlimited
显而易见,默认配置普通用户进程数是有限制的,root用户没有限制(这就是为什么root用户和其他用户可以登录)
查看linux 下所有用户的 进程数:
ps h -Led -o user | sort | uniq -c | sort -n
进程数  用户名
2      postfix
123    root
4096   tomcat
这样就很清晰的知道 tomcat的用户进程数达到了阈值
接下来查找什么进程导致的数量那么多, 通过以下命令查看进程信息
ps axu | grep tomcat 或 ps -ef | grep tomcat
#(这里的tomcat是指那个登录不了的用户)
如果你的进程真的需要存在,那么调整限制文件里的配置将4096 调到 8192 或更大
如果你发现进程不是你需要的可以停掉,实在不行就 kill -9 进程号
这里可能会遇到问题, 通过ps aux 或 ps -ef 查找出来的进程发现进程数并没有 4096那么多,原因是进程中的线程没有被查询出来,默认情况下采用 ps 命令并不能显示出所有的进程。因为 Linux 环境下执行多线程,每个线程都将以一个轻量级进程(light-weight process [LWP])的形式执行,可以通过加-L来查看:
ps aux -L
#或
ps -efL
查找出对应的进程后,看情况该关掉停掉的就close吧Kill 吧,如果程序是必须的就调整用户线程数吧
后话:真正的原因
  项目里面有个方法用了多线程,而这个方法结束后没有回收或者结束掉这些子线程 T T
补充:
  如果你的系统没有其他用户(root也无妨使用),找运维吧。如果你就是运维,我也不知道怎么办呀,重启(释放进程)试试吧!(不建议重启系统)
 

Linux 系统无法登录?你的程序有问题吧!的更多相关文章

  1. Linux系统如何将某一程序设置为开机自启动

    文章来源:百度知道. Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍L ...

  2. 查看Linux系统用户登录日志

    日志: /var/log/wtmp说明: 此文件是二进制文件,查看方法如下:该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加 ...

  3. Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)

    Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...

  4. Mingw:在Linux系统下编译Windows的程序

    Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...

  5. shell脚本监控Linux系统的登录情况

    一.登录日志记录 vi /etc/profile 在最后面添加一行: echo "`who`" > /var/log/login.log 二.监控日志文件 #!/bin/ba ...

  6. 在linux系统中登录mysql时出现Enter password: ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)的解决办法

    在一次使用mysql数据库是出现了这种错误,于是乎去百度看了很多博文踩了很多坑,最终解决了问题,分享给大家. 转载与:https://blog.csdn.net/css33/article/detai ...

  7. linux 系统忘记登录密码

    linux6/6.5再启动时,按e ->在输入行最后面 输入空格 再输入single ->启动设置密码即可 单用户模式 在centos7需要 按e -> 然后滚动列表,找到ro(ro ...

  8. VM下的linux系统上不了网?? 使用putty远程登录不上linux的解决方法?

    背景:昨晚想尝试一下用putty远程登录我的linux系统,悲剧的是,我竟然连接不上,显示 connection refused   ,连接被拒绝.于是我就想看看能不能在linux下看看能不能访问百度 ...

  9. Linux系统中C&Cpp程序开发(一)

    之前一直在Windows系统下进行程序的设计,近期开始学习使用Linux系统,因而打算将程序开发也转移到Linux系统下.今天先简单介绍一下该系统下的C程序开发步骤. 首先要预先安装vim和gcc工具 ...

随机推荐

  1. javascript面向对象的写法01

    类和对象 其他面向对象的语言类的语法是内置的,自然而然的事.javascript中有对象,但没有类的语法,类的实现需要模拟出来. 只需要把对象想成一个容器,里面存放一些属性或方法,把类想象成一个对象的 ...

  2. Flask环境github及项目部署(十三)

    (1) github项目搭建 1 连接GitHub hostnamectl set-hostname flask-dev # 设置 hostname,一般是主机名可以不更改 ssh-keygen # ...

  3. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  4. 3元购买微信小程序解决方案一个月

    一.登录微信公众平台https://mp.weixin.qq.com/ 二.点击立即注册.注意:这里不要用微信公众号登录,小程序账号和微信公众号是不同的. 三.在注册页面点击小程序板块. 四.进入小程 ...

  5. Oracle Dataguard 基本原理

    转载-http://blog.sina.com.cn/s/blog_7c5a82970101prcx.html 1.DATAGUARD原理 DATAGUARD是通过建立一个PRIMARY和STANDB ...

  6. 在Centos 7上安装Docker

    在Centos 7上安装Docker 1.docker介绍 docker是类似于vmware的虚拟化软件,可以开发.容纳.运行应用程序的平台,在容器中安全的隔离运行应用程序. 2.Docker引擎 D ...

  7. MSMQ学习笔记一——概述

    一.MSMQ是什么 Message Queuing(MSMQ) 是微软开发的消息中间件,可应用于程序内部或程序之间的异步通信.主要的机制是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为M ...

  8. bzoj2111 [ZJOI2010]排列计数

    Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic ...

  9. html5 5个重要特性

    HTML5已经火了一段时间了,相信作为web相关开发project师,肯定或多或少的了解和尝试过一些HTML5的特性和编程.还记得曾经我们介绍过的HTML5新标签. 作为未来前端开发技术的潮流和风向标 ...

  10. 【LOJ6042】「雅礼集训 2017 Day7」跳蚤王国的宰相(思博题)

    点此看题面 大致题意: 给你一棵树,询问对于每个点需要改变多少条边来使得它成为树中到所有点距离和最小的点. 一些初始化及想法 这是一道思博题. 首先我们要知道一个结论:对于这棵树的重心,它的答案必定为 ...