今天遇到一个问题,有个用户连接不上服务器(无法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基础入门知识

    JavaScript三种使用方式 JavaScript代码屏蔽 JavaScript内容显示的位置 JavaScript中的错误及解决方法 1.语法错误:通过控制台可以检查并解决. 2.逻辑错误:通过 ...

  2. UML视频

    https://www.bilibili.com/video/av34973179/?p=1 北京 圣思园 UML视频

  3. 爬虫入门之Requests模块学习(四)

    1 Requests模块解析 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用 Requests 继承了urllib2的所有特性.Requests支持HTTP连接保 ...

  4. 用大白话告诉你什么是Event Loop

    文章原文地址 前沿 从前有座山,山里有座庙,庙里有个小和尚在讲故事.讲什么呢?讲的是: 从前有座山,山里有座庙,庙里有个小和尚在讲故事.讲什么呢?讲的是: 从前有座山,山里有座庙,庙里有个小和尚在讲故 ...

  5. Java使用FileReader(file)、readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号。

    //Java使用FileReader(file).readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号. public static void readFi ...

  6. Python变量和数据类型(入门2)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6400809.html 本文出自:[Edwin博客园] Python变量和数据类型 一.整数 int = 20 ...

  7. Android(java)学习笔记8:同步代码块 和 同步方法 的应用

    1. 同步代码块 和 同步方法 代码示例: (1)目标类,如下: package cn.himi.text; public class SellTicket implements Runnable { ...

  8. xHTML与HTML的写法有什么不同?

    全部标签都必须小写 在XHTML中,全部的标签都必须小写.不能大写和小写穿插当中.也不能全部都是大写. 事比例如以下. 错误:<Head></Head><Body> ...

  9. CF821E 【Okabe and El Psy Kongroo】

    首先我们从最简单的dp开始 \(dp[i][j]=dp[i-1][j]+dp[i-1][j+1]+dp[i-1][j-1]\) 然后这是一个O(NM)的做法,肯定行不通,然后我们考虑使用矩阵加速 \( ...

  10. 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)

    洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...