使用ls / 命令卡死,或者df -h 查看卡死解决办法

本文介绍了一台服务器在执行ls命令时出现卡死现象的原因及解决步骤。通过使用strace命令跟踪,发现命令在/mnt目录处卡住。进一步使用fuser检查到有问题的进程,并通过kill命令终止这些进程,最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

今天公司一台服务器 执行 ls / 命令时,系统卡死, ctrl+c 也不能结束,如下:

    root@pts/23 # ls /
    ^C

此问题一般都是因为mount 对端服务失效,本地目录卡死造成

解决思路:

1. strace 命令跟踪,定位问题

首先使用 命令跟踪, 查看执行到哪一步卡死:

    root@pts/26 # strace  ls /
    ....
    ...
    ..
    lgetxattr("/MegaSAS.log", "system.posix_acl_default", 0x0, 0) = -1 ENODATA (No data available)
    lstat("/net", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
    lgetxattr("/net", "security.selinux", 0x258f850, 255) = -1 EOPNOTSUPP (Operation not supported)
    lstat("/net", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
    lgetxattr("/net", "system.posix_acl_access", 0x0, 0) = -1 EOPNOTSUPP (Operation not supported)
    lstat("/chaichuan_test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lgetxattr("/chaichuan_test", "security.selinux", 0x258f850, 255) = -1 ENODATA (No data available)
    lstat("/chaichuan_test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lgetxattr("/chaichuan_test", "system.posix_acl_access", 0x0, 0) = -1 ENODATA (No data available)
    lgetxattr("/chaichuan_test", "system.posix_acl_default", 0x0, 0) = -1 ENODATA (No data available)
    lstat("/mnt", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
    lgetxattr("/mnt",

可以看到,命令执行到 /mnt这个目录时,停止不动了

也可以使用cat /proc/mounts 查看当前mount状态,发现确实有对mnt目录的记录

root@pts/31 # cat /proc/mounts 
    ...
    192.168.10.150:/opt/ /mnt nfs4 ....
2. fuser 查看问题目录进程

问题定位/mnt目录,使用fuser 查看此目录占用进程

root@pts/30 # fuser -m /mnt
无法获取 /proc/4110/fd/255 的文件状态: 失效文件句柄
无法获取 /proc/9492/fd/255 的文件状态: 失效文件句柄
无法获取 /proc/29965/fd/255 的文件状态: 失效文件句柄
3.kill 解决

找到进程号直接kill

root@pts/30 # kill -9 4110

root@pts/30 # kill -9 9492

root@pts/30 # kill -9 29965

问题解决

总结:

strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的, 具体使用可以查看帮助.

转载于:https://blog.51cto.com/chaichuan/2104093

pipeline { agent any environment{ projectListString = "${params.project_list_string}" MAVEN_OPTS = '-Dmaven.test.skip=true' // 跳过测试 } stages { stage('删除输出目录1') { steps { sh 'rm -rf output && mkdir output' } } stage('编译打包平台代码') { steps{ git branch: 'release/v1.4.7', url: 'git@66.0.34.107:joyin-wfw/joyin-fyzg-microservice-parent.git' sh "mvn ${MAVEN_OPTS} -T 1C clean install -Pdev" } } stage('拉取并构建数据中心代码'){ steps { git branch: 'develop', url: 'git@66.0.34.107:joyin-wfw/joyin-fyzg-sjzx-parent.git' sh "mvn ${MAVEN_OPTS} -T 1C clean install -Pdev" } } stage('拉取并构建综合信披代码'){ steps { git branch: 'develop', url: 'git@66.0.34.107:joyin-wfw/joyin-fyzg-zhxp-parent.git' sh "mvn ${MAVEN_OPTS} -T 1C clean install -Pdev" } } stage('拉取并构建资管产品代码'){ steps { git branch: 'develop', url: 'git@66.0.34.107:joyin-wfw/joyin-fyzg-zgcp-parent.git' sh "mvn ${MAVEN_OPTS} -T 1C clean install -Pdev" } } stage('拉取并构建项目代码'){ steps { git branch: 'develop', url: 'git@66.0.34.107:joyin-wfw/joyin-fyzg-sylcxxpl-parent.git' sh "mvn ${MAVEN_OPTS} -T 1C clean install -Pdev" } } stage('解压') { steps { dir('output/') { sh 'ls *.tar.gz | xargs -n1 tar xzvf' } } } stage('启动项目') { steps { dir('output/') { script{ for (projectName in projectListString.tokenize(',')) { if (projectName == 'fyzg-sylc-compose'){ dir('fyzg-sylc-compose/lib/'){ sh "mkdir tmp" sh "mv fyzg-df-compose-api-0.0.1-SNAPSHOT.jar tmp/" dir('tmp/'){ sh "jar -xvf fyzg-df-compose-api-0.0.1-SNAPSHOT.jar" sh "rm -rf fyzg-df-compose-api-0.0.1-SNAPSHOT.jar" sh "rm -rf log4j2.xml bootstrap.yml application.yml logback-spring.xml" sh "jar -cvf fyzg-df-compose-api-0.0.1-SNAPSHOT.jar ./*" sh "mv fyzg-df-compose-api-0.0.1-SNAPSHOT.jar ../" } sh "rm -rf tmp*" sh "mkdir tmp" sh "mv fyzg-zhxp-compose-0.0.1-SNAPSHOT.jar tmp/" dir('tmp/'){ sh "jar -xvf fyzg-zhxp-compose-0.0.1-SNAPSHOT.jar" sh "rm -rf fyzg-zhxp-compose-0.0.1-SNAPSHOT.jar" sh "rm -rf log4j2.xml bootstrap.yml application.yml logback-spring.xml" sh "jar -cvf fyzg-zhxp-compose-0.0.1-SNAPSHOT.jar ./*" sh "mv fyzg-zhxp-compose-0.0.1-SNAPSHOT.jar ../" } sh "rm -rf tmp*" sh "mkdir tmp" sh "mv fyzg-zgcp-compose-0.0.1-SNAPSHOT.jar tmp/" dir('tmp/'){ sh "jar -xvf fyzg-zgcp-compose-0.0.1-SNAPSHOT.jar" sh "rm -rf fyzg-zgcp-compose-0.0.1-SNAPSHOT.jar" sh "rm -rf log4j2.xml bootstrap.yml application.yml logback-spring.xml" sh "jar -cvf fyzg-zgcp-compose-0.0.1-SNAPSHOT.jar ./*" sh "mv fyzg-zgcp-compose-0.0.1-SNAPSHOT.jar ../" } sh "rm -rf tmp*" } } sshPublisher(publishers: [sshPublisherDesc(configName: 'joyin-xxpl-server', transfers: [sshTransfer(cleanRemote: true, excludes: '', execCommand: """#!/bin/bash #创建备份目录 if [ ! -d "/home/app/server/bak/${BUILD_NUMBER}" ]; then mkdir -p /home/app/server/bak/${BUILD_NUMBER} fi #备份服务 cd /home/app/server cp -r ${projectName} /home/app/server/bak/${BUILD_NUMBER} #执行重启脚本 cd /home/app/server/${projectName}/bin/ sh start.sh stop sh start.sh start '' dev exit 0 """, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${projectName}", remoteDirectorySDF: false, removePrefix: "${projectName}", sourceFiles: "${projectName}/**")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } } } } } }优化执行效率
最新发布
08-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值