如何使用Linux查看未关闭的文件 (linux查看未关闭的文件)

Linux操作系统是一个非常流行的开源系统,被越来越多的用户和开发者使用。它不仅具有出色的安全性和稳定性,还拥有丰富的命令行工具,大幅度提高了用户的工作效率。在本文中,我们将介绍如何使用Linux查看当前未关闭的文件,以及如何进行管理。

当程序结束时,应该关闭它创建的所有文件。如果文件没有被正确地关闭,这可能导致文件系统资源的浪费,影响系统的稳定性。因此,在Linux中查看当前未关闭的文件可以是一个好的习惯。

查看未关闭的文件

在Linux中,有多种方法可以查看当前未关闭的文件。以下是最常用的两种方法:

1.使用lsof命令

lsof(list open files)是一个强大的命令行工具,可以列出当前系统中所有打开的文件和进程。可以使用以下命令来查看当前未关闭的文件:

“`

sudo lsof | grep -i “deleted”

“`

这条命令将返回所有未关闭的已删除的文件,其中“deleted”表示该文件被删除,但仍然在进程中被打开。我们可以使用这个命令来检查哪些程序没有正确地关闭它们创建的文件。

2.使用fuser命令

另一个命令是fuser,它是一个查看进程使用文件或套接字的命令行工具。使用以下命令可以查看当前所有未关闭的文件:

“`

sudo fuser -v / | grep -e “[[:digit:]]\+u”

“`

这个命令将返回所有已打开的,但未关闭的文件,其中“u”表示文件被使用,在括号里的数字表示文件的文件描述符(file descriptor)。如果文件被多个进程打开,这个命令会显示所有的进程。

管理未关闭的文件

一旦查找到未关闭的文件,我们需要采取措施来关闭它们。以下是一些可用的方法:

1.使用proc文件系统

proc文件系统是内核使用和操作的一种虚拟文件系统。每个运行的进程都在proc文件系统上有一个目录,可以使用以下命令找到一些有用的信息,并尝试关闭文件:

“`

sudo ls -l /proc/[pid]/fd | grep deleted

sudo rm -rf /proc/[pid]/fd/[fd]

“`

其中,[pid]是进程的进程ID,[fd]是该进程打开文件的文件描述符。我们使用ls命令来找到由进程打开但已删除的文件,然后使用rm命令强制删除该文件的文件描述符,这将关闭该文件。

2.使用lsof命令

可以使用lsof命令查找所有未关闭的文件,并显示相应的进程ID。然后可以使用kill命令杀死相应的进程ID,强制关闭未关闭的文件。例如:

“`

sudo lsof | grep -i “deleted” | awk ‘{print $2;}’ | sort | uniq | xargs kill -9

“`

这个命令使用grep命令查找所有未关闭的已删除文件,然后使用awk命令提取进程ID,使用sort和uniq命令去除重复项,最后使用xargs和kill命令来强制杀死进程并关闭文件。

在本文中,我们介绍了,并提供了一些管理这些文件的策略。当您发现系统中存在未关闭的文件时,请尽早采取措施,以确保系统的稳定性和安全性。记住,Linux是一个强大的系统,拥有大量的工具和命令可用于管理和维护。

相关问题拓展阅读:

Linux那些命令操作

Linux常用命令手册

NO

分类

PS1

命令名

用法及参数

功能注解

对应章节

文件管理

#

ls

ls -a

列出当前目录下的所有文件,包括以.头的隐含文件

文件管理

#

ls

ls -l或ll

列出当前目录下文件的详细信息

文件管理

#

pwd

pwd

查看当前所在目录的绝对路经

文件管理

#

cd

cd ..

回当前目录的上一级目录

文件管理

#

cd

cd –

回上一次所在的目录

文件管理

#

cd

cd ~ 或 cd

回当前用户的宿主目录

文件管理

#

cd

cd ~用户名

回指定用户的宿主目录

文件管理

#

mkdir

mkdir 目录名

创建一个目录

文件管理

#

mkdir

mkdir –p

递归式去创建一些嵌套目录

文件管理

#

rmdir

Rmdir 空目录名

删除一个空目录

文件管理

#

rm

rm 文件名 文件名

删除一个档或多个档

文件管理

#

rm

rm -rf 非空目录名

递归删除一个非空目录下的一切,不让提式-f

文件管理

#

cat

cat文件名

一屏查看档内容

文件管理

#

more

more文件名

分页查看档内容

文件管理

#

less

less 文件名

可控分页查看档内容

文件管理

#

grep

grep字符 文件名

根据字符匹配来查看文件部分内容

文件管理

#

mv

mv 路经/文件 /经/文件

移动相对路经下的文件到绝对路经下

文件管理

#

mv

mv 文件名 新名称

在当前目录下改名

文件管理

#

cp

cp /路经/文件 ./

移动绝对路经下的文件到当前目录下

文件管理

#

find

find 路经 -name “字符串”

查找路经所在范围内满足字符串匹配的文件和目录

文件管理

#

ln

ln 源文件 链接名

创建当前目录源文件的硬链接

ln /home/test /usr/test1

在/usr下建立/home/test的硬链接

文件管理

#

ln

Ln -s a b

创建当前目录下a的符号链接b

文件管理

#

touch

touch file1 file2

创建两个空文件

磁盘管理

#

df

df

用于报告文件系统的总容量,使用量,剩余容量。

磁盘管理

#

du

du -b /home

查看目前/HOME目录的容量(k)及子目录的容量(k)。

磁盘管理

#

fdisk

fdisk -l

查看系统分区信息

磁盘管理

#

fdisk

fdisk /dev/sdb

为一块新的SCSI硬盘进行分区

磁盘管理

#

mkfs.ext3

Mkfs.ext3 /dev/sdb1

为之一块SCSI硬盘的之一主分区格式化成

ext3的文件系统

mkfs.ext2

Mkfs.ext2/dev/sdb2

格式化成ext2文件系统

磁盘管理

#

mount

mount -t 文件系统类型 设备路经 访问路经

磁盘管理

#

文件系统类型

Iso9660

光驱文件系统

vfat

Fat文件系统(windows)

挂载光驱

#

mount –t iso9660 /dev/cdrom /mnt/cdrom

挂载FAT

#

mount –t vfat /dev/hda5 /mnt/cdrom

挂之一个ide的第五个逻辑分区

磁盘管理

#

Umount /mnt/cdrom

卸载/mnt/cdrom为空

文件权限

#

chmod

chmod u+s file

为file的属主加上特殊权限

chmod g+r file

为file的属组加上读权限

chmod o+w file

为file的其它用户加上写权限

chmod a-x file

为file的所有用户减去执行权限

chmod 765 file 为file的属主设为完全权限,属组设成读写权,其它用户具有读和执心权限

文件权限

#

chown

chown root /home

把/home的属主改成root用户

文件权限

#

chgrp

chgrp root /home

把/home的属组改成root组

打印管理

#

redhat-config-printer-tui

进入安装打印机接口

打印管理

#

lp

lp –d hptr file

打印file到hptr的打印机上

打印管理

#

lpq

Lpq –P 打印机名

查看打印机的状态

打印管理

#

lprm

Lprm –P 打印机名 a

删除打印机内的打印作业

打印管理

#

disable

Disable –r “changing paper” HPtr

禁用打印机并提示原因

打印管理

#

enable

Enable HPtr

重新启用被禁用的

用户管理

#

useradd

Useradd

创建一个新的用户

用户管理

#

groupadd

Groupadd 组名

创建一个新的组

用户管理

#

passwd

Passwd 用户名

为用户创建密码

用户管理

#

Passwd -d

Passwd -d用户名

删除用户密码也能登陆

用户管理

#

Passwd -l

Passwd -l用户名

锁定账号密码

用户管理

#

Passwd -u

Passwd -u用户名

解锁账号密码

用户管理

#

Passwd -S

Passwd -S用户名

查询账号密码

用户管理

#

Usermod -l

Usermod -l 新用户名 老用户名

为用户改名

用户管理

#

Usermod -L

Usermod -L 要锁定用户名

锁定用户登陆

用户管理

#

Usermod -U

Usermod –U解锁用户名

解锁用户登陆

用户管理

#

Usermod -u

Usermod –u 501用户名

改变用户UID

用户管理

#

Userdel

Userdel–r 用户名

删除用户一切

用户管理

#

Groupmod -n

Groupmod –n新用户名 老用户名

为组改名

用户管理

#

Groupmod -g

Groupmod –g 501 组名

改变组GID

用户管理

#

groupdel

Groupdel组名 先应删它的用户

删除组

用户管理

#

gpasswd -a

gpasswd -a 用户名 组名

增加用户到组

用户管理

#

Id

id 用户名

查用户信息

软件管理

#

rpm -qa

rpm –qa | less

查询已安装RPM

软件管理

#

rpm –qa | grep ftp

查询指定RPM

软件管理

#

rpm -q

rpm -q 已安装的RPM包

查是否安装

软件管理

#

rpm -q telnet-server

查看telnet服务器包

软件管理

#

rpm -qi

rpm –qi 软件包名称

查看软件的描述信息

软件管理

#

rpm -ql

rpm –ql软件包名称

查询软件包的文件列表

软件管理

#

rpm -qf

rpm –qf软件包名称

查询某个文件所属的软件包

软件管理

#

rpm -qp

rpm –qp软件包全名

查询未安装的软件包信息

软件管理

#

rpm -e

rpm –e 软件包名称

删除具体的软件包

软件管理

#

rpm -U

rpm –Uvh软件包全名

升级软件包并显示过程

软件管理

#

rpm -ivh

rpm –ivh 软件包全名

安装软件包并显示过程

软件管理

#

rpm -V

rpm –V软件包名称

验证软件包的大小,类型等

软件管理

#

tar

-c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包

软件管理

#

tar -cf

tar –cvf benet.tar /home/benet

把/home/benet目录打包

软件管理

#

tar -czf

tar –zcvf benet.tar.gz /mnt

把目录打包并压缩

软件管理

#

tar –tf

tar –tf benet.tar

看非压缩包的档列表

软件管理

#

tar –tzf

tar –tf benet.tar.gz

看压缩包的档列表

软件管理

#

tar –xf

tar –xf benet.tar

非压缩包的档恢复

软件管理

#

tar –zxvf

tar –zxvf benet.tar.gz

压缩包的档解压恢复

软件管理

#

tar -jxvf

tar –jxvf benet.tar.bz2

软件管理

#

diff

diff file1 file2 > 补丁名.patch

为新旧档生成补丁档

软件管理

#

diff

diff file1 file2

比较两个文件的区别

软件管理

#

Patch

Patch file补丁名.patch

打补丁

软件管理

#

./configure –prefix=/usr/local/

编译前配置

软件管理

#

make

编译

软件管理

#

make install

安装编译好的源码包

启动管理

#

reboot

Init 6

重启LINUX系统

启动管理

#

Halt

Init 0

Shutdown –h now

关闭LINUX系统

启动管理

#

runlevel

显示系统运行级

启动管理

#

Init

改变系统运行级,7种

启动管理

#

Chkconfig –-list

查看服务的状态

启动管理

#

Chkconfig –-level on|off|set

设置服务的启动状态

启动管理

#

Chkconfig on|off|set

设置非独立服务启状态

进程管理

#

Top动态

Ps-aux静态

进程树pstree

查看系统进程

进程管理

#

程序名 &

后台运行程序

进程管理

#

fg

把后台运行的进程调回前台

进程管理

#

bg

把前台运行进程调到后台

进程管理

#

renice

Renice +1 180

把180号进程的优先级加1

进程管理

#

kill

Kill PID

终止某个PID进程

进程管理

#

at

at 5pm + 3 days

/bin/ls

指定三天后下午5:00执行/bin/ls

进程管理

#

crontab

Crontab -e

用VI的形式来编辑自动周期性任务

进程管理

#

crontab

Crontab -l

查看自动周期性任务

进程管理

#

crontab

Crontab -r

删除自动周期性任务

进程管理

#

crond

Service crond

马上启动自动周期

Service crond

实现磁盘配额

(注安装LINUX时建立/home分区)

目标:对用户zhao在/home目录上实现soft limit为5k,hard limit 为10k的磁盘配额

实现步骤:

1. 修改包含/home的行, #vi /etc/fstab, 改为:defaults,usrquota。也就是增加usrquota项。然后保存退出。

2、卸载/home目录#umount /home

3. 挂接/home目录#mount /home

4、增加用户zhao#useradd zhao

5、修改密码 #passwd zhao

6、生成关于/home目录的quota信息# quotacheck -cmug /home

#quotacheck -vu /home

7、查看所有用户的信息#repquota -au

8、设置配额 #edquota -u zhao

将soft 和hard 分别改为5和10

9、保存并退出 #wq!

10、修改时间 #edquota -t

11、#wq!

12.开启/home上的磁盘配额功能 #quotaon /home

13.查询配额 #quota -u zhao

14.验证配额 #su – zhao

$touch myfile

useradd命令的常用选项如下:

-c comment:用户全名或描述。l

-d home-dir:指定用户主目录。l

-e date:禁用账户的日期,格式为:YYYY-MM-DD。l

-f days:口令过期后,账户禁用前的天数。l

-g group-name:用户所属主组群的组群名称或GID。l

-G group-list:用户所属的附属组群列表,多个项目用逗号分隔。l

-m:若主目录不存在则创建它。l

-M:不创建用户主目录。l

-n:不要为用户创建用户私人组群。l

-r:创建UID小于500的不带主目录的系统账户。l

-p:加密的口令。l

-s:指定用户登录 Shell,默认为 /bin/bash。l

-u UID:指定用户的 UID,它必须是唯一的,且大于499。l

用history命令就行,具体格式:

# history

# history

# history histfiles

参数:

n :数字,意思是‘要列出最近的 n 笔命令列表’的意思!

-c :将目前的 shell 中的所有 history 内容全部消除

-a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles ,

则预设写入 ~/.bash_history

-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;

linux常用命令及用法

linux常用命令及用法如下:

pwd 显示工作路径

shutdown -h now 关闭系统   /halt 关闭系统

shutdown -r now 重启 / reboot 重启

systemctl stop firewalld  关闭防火墙

ip addr  查看ip地址

1、cd命令:这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:

cd /home    进入根目录下面的home目录 

cd home    进入当前目录下的home目录 

cd ..     返回上一层目录 

cd ../..    返回上两级目录

cd /     返回跟目录

cd返回上次所在的目录 

2、ls命令:这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多,下面就列出一些我常用的参数吧,如下:

ls    查看目录中的文件 

ls -a  列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来

ls -l   显示文件和目录的详细资料 

3、mkdir命令:创建

mkdir dir1 创建一个叫做 ‘dir1′ 的目录’

mkdir dir1 dir2 同时创建两个目录 

4、rm命令:删除

rm -f file1   删除一个叫做 ‘file1′ 的文件’

rmdir dir1   删除一个叫做 ‘dir1′ 的目录’ (空目录才能删除)

rm -rf dir1   删除一个叫做 ‘dir1’ 的目录并同时删除其内容

rm -rf dir1 dir2   同时删除两个目录及它们的内容 

5、mv命令:该命令用于移动文件、目录或更名,move之意,它的常用参数如下:-f 如果目标文件已经存在,不会询问而直接覆盖

mv file1 file2   把文件file1重命名为file2  

mv file1 file2 dir   把文件file1、file2移动到目录dir中

6、cp命令:该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下, 它的常用参数如下:

cp  -a file1 file2  连同文件的所有特性把文件file1复制成文件file2

cp dir/* .  复制一个目录下的所有文件到当前工作目录 

cp -a /tmp/dir1 .  复制一个目录到当前工作目录 

cp -a dir1 dir2  复制一个目录 

7、find命令:find是一个基于查找的功能非常强大的命令

find / -name file1 从 ‘/’ 开始进入根文件系统搜索文件和目录 

find / -user user1 搜索属于用户 ‘user1’ 的文件和目录 

find /home/user1 -name \*.bin 在目录 ‘/ home/user1′ 中搜索带有’.bin’ 结尾的文件 

find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 

find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件

linux查看未关闭的文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux查看未关闭的文件,如何使用Linux查看未关闭的文件,Linux那些命令操作,linux常用命令及用法的信息别忘了在本站进行查找喔。


数据运维技术 » 如何使用Linux查看未关闭的文件 (linux查看未关闭的文件)