Linux中高逼格,超实用,提高工作效率的命令 [持续更新]

431 阅读4分钟

目录

1、根据进程名查看该进程打开的所有文件信息

2、由fd查看其对应的文件名及打开该文件的进程信息

3、查看某路径下文件正在被哪些进程打开使用

4、递归查看打开某目录及其子目录下文件的所有进程信息

5、查看指定pid打开的所有文件信息

6、查看打开指定tcp端口的进程信息

7、由pid查看进程启动的详细时间点:

8、命令历史中增加命令执行的ip及时间信息

9、查看系统当前内存占用前10的进程信息

10、查看系统当前cpu占用前10的进程信息

11、给history历史命令加上命令执行的具体时间

12、创建目录,并切换到该目录



1、根据进程名查看该进程打开的所有文件信息

lsof -c app_name

2、由fd查看其对应的文件名及打开该文件的进程信息

lsof -d fd

3、查看某路径下文件正在被哪些进程打开使用

lsof +d path

4、递归查看打开某目录及其子目录下文件的所有进程信息

lsof +D path

比如,查询/var目录下文件被哪些进程打开,可以看到/var/log/下文件及/var/spool/下文件都能查询到:

5、查看指定pid打开的所有文件信息

lsof -p pid

6、查看打开指定tcp端口的进程信息

[root@localhost ~]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1542 root    3u  IPv4  21828      0t0  TCP *:ssh (LISTEN)
sshd    1542 root    4u  IPv6  21830      0t0  TCP *:ssh (LISTEN)
sshd    2312 root    3u  IPv4  23747      0t0  TCP localhost.localdomain:ssh->192.168.61.55:vrtl-vmf-sa (ESTABLISHED)
sshd    8859 root    3u  IPv4  55684      0t0  TCP localhost.localdomain:ssh->192.168.61.52:5211 (ESTABLISHED)

7、由pid查看进程启动的详细时间点:

ps  -p pid -o lstart 

[root@localhost ~]# ps -p 856 -o lstart
                 STARTED
Mon Jan 11 09:15:28 2021

8、命令历史中增加命令执行的ip及时间信息

打开并编辑/etc/profile文件,在文件末尾增添以下命令:

USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"

保存后,执行source /etc/profile使改动生效。

source /etc/profile

9、查看系统当前内存占用前10的进程信息

ps aux --sort -pmem | head -10

[root@rac2 test_code]# ps aux --sort -pmem | head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
oracle   11858  0.3 21.1 3396080 1671276 ?     Ss    2020  87:33 ora_m004_ora19c2
oracle    8322  0.3 18.1 3346876 1431328 ?     Ss    2020  52:51 ora_m003_ora19c2
oracle    4824  0.9 16.6 3413764 1312976 ?     Ssl   2020 962:46 ora_lms0_ora19c2
oracle   17683  0.3 16.1 3297416 1278848 ?     Ss   Jan02  36:24 ora_m002_ora19c2
oracle    4845  0.0 15.5 3195300 1228404 ?     Ss    2020  49:22 ora_dbw0_ora19c2
oracle    4889  0.1 14.8 3221636 1172508 ?     Ss    2020 162:54 ora_mmon_ora19c2
oracle   15667  0.3 10.4 3281108 822084 ?      Ss   Jan09   7:12 ora_m006_ora19c2
oracle    4774  0.2  9.9 3199532 788460 ?      Ss    2020 269:25 ora_dbrm_ora19c2
oracle    4863  0.0  8.9 3201740 705096 ?      Ss    2020  19:20 ora_smon_ora19c2

10、查看系统当前cpu占用前10的进程信息

ps aux --sort -pcpu | head -10

[root@rac2 test_code]# ps aux --sort -pcpu | head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2900  5.6  2.2 1196888 176184 ?      SLsl  2020 5686:50 /oracle/grid/crs_1/bin/osysmond.bin
grid      3307  3.5  0.1 1556700 15172 ?       Ss    2020 3527:46 asm_vktm_+ASM2
oracle    4720  3.5  0.0 3181844 6072 ?        Ss    2020 3584:13 ora_vktm_ora19c2
grid      3004  3.2  3.1 1247368 245904 ?      SLsl  2020 3230:50 /oracle/grid/crs_1/bin/ocssd.bin
grid      3517  2.9  0.7 1458760 60680 ?       Ssl   2020 2939:47 /oracle/grid/crs_1/bin/oraagent.bin
root      3527  2.9  0.7 1431088 60172 ?       Ssl   2020 3017:01 /oracle/grid/crs_1/bin/orarootagent.bin
root     30565  2.3  0.0 116780  4860 pts/2    Ss   Jan08  94:23 -bash
root      2328  2.0  3.1 1553840 250816 ?      Ssl   2020 2080:04 /oracle/grid/crs_1/bin/ohasd.bin reboot
root      3407  2.0  1.7 1438172 141416 ?      Ssl   2020 2099:22 /oracle/grid/crs_1/bin/crsd.bin reboot

11、给history历史命令加上命令执行的具体时间

export HISTTIMEFORMAT='%F %T  '

yg-net-static:~ # export HISTTIMEFORMAT='%F %T  '
yg-net-static:~ # 
yg-net-static:~ # 
yg-net-static:~ # history | head
    1  2021-03-26 18:09:14  whoami
    2  2021-03-26 18:11:11  zppyer se -s 'kernel*'
    3  2021-03-26 18:11:32  zypper se -s 'kernel*'
    4  2021-03-26 18:12:30  zypper search-packages 'kernel*'
    5  2021-03-26 18:12:39  zypper search-packages kernel
    6  2021-03-26 18:14:08  zypper search-packages kernel-default
    7  2021-03-26 18:15:19  zypper in kernel-default-devel
    8  2021-03-26 18:16:21  yast
    9  2021-03-26 18:26:56  zypper in -t pattern Basis-Devel
   10  2021-03-27 08:39:49  ps -ef |grep yast
yg-net-static:~ # 

取消显示时间的话,export HISTTIMEFORMAT='' 即可:

yg-net-static:~ # export HISTTIMEFORMAT=''
yg-net-static:~ # history | head
    1  whoami
    2  zppyer se -s 'kernel*'
    3  zypper se -s 'kernel*'
    4  zypper search-packages 'kernel*'
    5  zypper search-packages kernel
    6  zypper search-packages kernel-default
    7  zypper in kernel-default-devel
    8  yast
    9  zypper in -t pattern Basis-Devel
   10  ps -ef |grep yast

不想让某个知道命令在history中显示的话,可以如下过滤:

export HISTIGNORE='ls -l:pwd:date:'

这里设置后,history中不会显示ls -l,pwd,date的历史命令

export设置后只是本次生效,系统重启后失效,要永久生效,在~/.bash_profile文件中添加如下:

yg-net-static:~ # vi .bash_profile

HISTSIZE=500
HISTTIMEFORMAT='%F %T  '
yg-net-static:~ # 
yg-net-static:~ # source .bash_profile 
yg-net-static:~ # 

12、创建目录,并切换到该目录

在~/.bashrc中添加如下代码:

md () { mkdir -p "$@" && cd "$1"; }

然后,source ~/.bashrc使其生效,

之后就可以使用md来创建目录并同时可以切换到该目录下:

[root@localhost ~]# md aaaa
[root@localhost aaaa]# 
[root@localhost aaaa]# ls
[root@localhost aaaa]# 

欢迎关注我的微信公众号【大胖聊编程】,我的公众号中有更多文章分享,也可以在公众号中联系到我,加好友一起交流学习。