Linux运维工程师必备(命令)

简介:
  1. 如何过滤出以下目录的中的所有一级目录

[root@xcn ~]# ll

total 16

-rw-r--r-- 1 root root    0 Jul  5 11:43 111

-rw-r--r-- 1 root root    0 Jul  5 11:43 222

-rw-r--r-- 1 root root    0 Jul  5 11:43 333

drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa

drwxr-xr-x 2 root root 4096 Jul  5 11:43 bbb

drwxr-xr-x 2 root root 4096 Jul  5 11:43 ccc

drwxr-xr-x 2 root root 4096 Jul  5 11:43 ddd


方法1:ls -l结果中以d开头的就是目录

1
2
3
4
5
6
7
8
通过过滤以长格式输出的开头文件标识d
[root@xcn ~] # ls -l |grep ^d         
drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa
drwxr-xr-x 2 root root 4096 Jul  5 11:43 bbb
drwxr-xr-x 2 root root 4096 Jul  5 11:43 ccc
drwxr-xr-x 2 root root 4096 Jul  5 11:43 ddd
 
提示:^ :以...开头

方法2:通过给目录加标识,然后通过过滤标识,过滤出目录

1
2
3
4
5
6
7
[root@xcn ~] # ls -F   #把目录结尾加上"/",便于区分和过滤出来,ls -p也可以让目录带上斜线
111  222  333  aaa/  bbb/  ccc/  ddd/
[root@xcn ~] # ls -F|grep /$  #把包含斜线"/"的过滤出来就是目录
aaa/
bbb/
ccc/
ddd/

方法3:find的应用

1
2
3
4
5
[root@xcn ~] # find . -type d    #.代表当前目录
. /aaa
. /ccc
. /bbb
. /ddd

方法4:tree

1
2
3
4
5
6
[root@xcn ~] # tree -dl
.
|-- aaa
|-- bbb
|-- ccc
`-- ddd

过滤空行及#开头的行

1
2
3
4
5
6
7
[root@xcn ~] # grep -Ev "^#|^$" /etc/init.d/sshd 
[root@xcn ~] # egrep -v "^#|^$" /etc/init.d/sshd 
注释:
-E   #egrep
- v   #过滤
^ #  #井号开头
^$   #空行

方法5:sed

1
2
3
4
5
6
7
8
9
[root@xcn ~] # ls -l|sed -n /^d/p
drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa
drwxr-xr-x 2 root root 4096 Jul  5 11:43 bbb
drwxr-xr-x 2 root root 4096 Jul  5 11:43 ccc
drwxr-xr-x 2 root root 4096 Jul  5 11:43 ddd
 
注释:
-n  #拒绝默认输出
p   #打印

方法6:awk

1
2
3
4
5
[root@xcn ~] #ls -l|awk '/^d/ {print $0}'
drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa
drwxr-xr-x 2 root root 4096 Jul  5 11:43 bbb
drwxr-xr-x 2 root root 4096 Jul  5 11:43 ccc
drwxr-xr-x 2 root root 4096 Jul  5 11:43 ddd


2.假如当前目录是

1
2
[root@xcn ~] # pwd   #这是打印当前目录
/root

现在因为需要进入到了/tmp目录下进行操作,执行的命令如下:

1
2
3
4
5
6
[root@xcn ~] # pwd
/root
[root@xcn ~] # cd /tmp/
[root@xcn tmp] # cd -
/root
[root@xcn ~] #

原理:

1
2
[root@xcn ~] #  env|grep -i oldpwd   #是这个变量记录着上一次的目录
OLDPWD= /tmp


3.一个目录中有很多文件(ls查看时好多屏),想最快速度查看到最近更行的文件。如果看?

解答:

1
2
3
4
5
[root@xcn etc] # ls -lrt   #执行这个命令后最新的文件会在最下面
 
#以长格式按照修改时间倒序文件和目录,这样最近创建或修改的文件或目录
-t     #按修改时间
-r     #翻转


4.在配置apache时,执行了./confiure --prefix=/application/apache2.2.17 来编译apache在make installl完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache就可以访问到/apache的安装目录/application/apache2.2.17下的内容,请你给出实现的命令(提示:apache为一个http web服务)

1
[root@xcn ~] # ln -s /application/apache2.2.17 /application/apache   #-s 参数表示为创建软链接


5.已知apache服务的访问日志按天记录在服务器本地目录/data/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志!请问如何解决?请给出解决办法或配置或处理命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-rw-r--r-- 1 root root   0 Jun 28 00:00 2017-06-29_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jun 28 00:00 2017-06-29_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jun 29 00:00 2017-06-30_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jun 29 00:00 2017-06-30_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jun 30 00:00 2017-07-01_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jun 30 00:00 2017-07-01_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jul  1 00:00 2017-07-02_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jul  1 00:00 2017-07-02_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jul  2 00:00 2017-07-03_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jul  2 00:00 2017-07-03_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jul  3 00:00 2017-07-04_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jul  3 00:00 2017-07-04_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jul  4 00:00 2017-07-05_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jul  4 00:00 2017-07-05_00-00.backstage_error.log
-rw-r--r-- 1 root root   0 Jul  5 00:00 2017-07-06_00-00.backstage_access.log
-rw-r--r-- 1 root root   0 Jul  5 00:00 2017-07-06_00-00.backstage_error.log
 
[root@guaji01 ~] # find ./ -type f -name "*.log" -mtime +7|xarge rm -f    #删除7天

find 查找与时间有关参数:

-atime  n   #n为数字,意义为在n天之前的【一天之内】被access过的档案;

-ctime n  #n为数字,意义为在n天之前的【一天之内】内change过状态的档案

-mtime n #n 为数字,意思为在n天之前的【一天之内】被modification过的档案

-newer file #file  为一个存在的档案,意思是说,只要档案比file还要新,就会被列出来

1
find  ./  type  f -name  "*.log"  -mtime +7| xargs  rm  -f


6.调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?

法一:

1
2
3
4
5
6
7
8
9
10
11
[root@xcn ~] # tail -f /var/log/messages    
Jul  6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch
Jul  6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch
Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64
Jul  6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i686

法二:

1
2
3
4
5
6
7
8
9
10
11
[root@xcn ~] # tail -F /var/log/messages  
Jul  6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch
Jul  6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch
Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64
Jul  6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i68

法三:

1
2
3
4
5
6
7
8
9
10
11
[root@xcn ~] # tailf /var/log/messages 
Jul  6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch
Jul  6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch
Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64
Jul  6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64
Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64
Jul  6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i686


7.打印配置文件nginx.conf内容的行号及内容,该如何做?

法1:

1
2
3
4
5
6
7
8
9
10
11
[root@guaji01 conf] # nl nginx.conf
      1  user  nginx;
      2  worker_processes 4;
      3
      4   #pid /var/run/nginx.pid;
      5
      6  events {
      7      worker_connections  5000;
      8       #use epoll;
      9  }
....................


法2:

1
2
3
4
5
6
7
8
9
10
11
12
[root@guaji01 conf] # cat -n nginx.conf
      1  user  nginx;
      2  worker_processes 4;
      3
      4   #pid /var/run/nginx.pid;
      5
      6  events {
      7      worker_connections  5000;
      8       #use epoll;
      9  }
     10
........................


法3:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@guaji01 conf] # less -N nginx.conf
       1 user  nginx;
       2 worker_processes 4;
      
       #pid /var/run/nginx.pid;
      
       6 events {
       7     worker_connections  5000;
       8      #use epoll;
       9 }
      10 
      11 http {
      12     include       mime.types;
      13     default_type  application /octet-stream ;
      14

法4:vi 文件 然后执行:set nu,  :set nonu 为取消行号



8.装完系统后,希望让网络文件共享服务NFS,仅在3级别上开机自启动,该如何做?

方法1:全部关掉然后开启需要的级别的服务

1
2
3
4
5
6
7
[root@xcn ~] # chkconfig nfs off
#默认2,3,4,5级别都是开启状态,所有需要先都关了。当然也可以chkconfig --level 245 nfs off
[root@xcn ~] # chkconfig --list nfs
nfs             0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
[root@xcn ~] # chkconfig --level 3 nfs on
[root@xcn ~] # chkconfig --list nfs
nfs             0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:关闭  6:关闭


方法2:关闭不需要的级别的服务

1
2
3
4
5
[root@xcn ~] # chkconfig --list nfs
nfs             0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@xcn ~] # chkconfig --level 245 nfs off
[root@xcn ~] # chkconfig --list nfs
nfs             0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:关闭  6:关闭


12./etc/目录为Linux系统的默认的配置文件及服务启动命令的目录

  1. 请用tar打包/etc整个目录(打包及压缩)

  2. 请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)

  3. 请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar 命令实现)

解答:

a:

1
2
3
4
5
6
7
[root@xcn /] # tar zcvf etc.tar.gz  ./etc/
-rw-r--r--    1 root root 9948783 9月  24 04:12 etc. tar .gz
 
z:压缩
c:创建
v :显示输出
f:文件ch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@xcn /] # tar tf etc.tar.gz  #查看压缩包里的内容
etc/
etc /sysctl .conf
etc /modprobe .d/
etc /modprobe .d /blacklist .conf
etc /modprobe .d /dist .conf
etc /modprobe .d /anaconda .conf
etc /modprobe .d /openfwwf .conf
etc /modprobe .d /dist-oss .conf
etc /modprobe .d /dist-alsa .conf
etc /gnupg/
etc /oddjobd .conf.d/
etc /oddjobd .conf.d /oddjobd-introspection .conf
etc /oddjobd .conf.d /oddjobd-mkhomedir .conf
etc /updatedb .conf
etc /sudo .conf
etc /mailcap
etc /nanorc
etc /fprintd .conf
etc /printcap
etc /rwtab


13.已知如下命令结果:

1
2
3
[root@xcn ~] # echo "I am xcn mysql is 995345781" >> xcn
[root@xcn ~] # cat xcn 
I am xcn mysql is 995345781

现在需要从文件中过滤出"xcn"和"995345781"字符串,请给出命令

解答:

方法1:

1
2
3
4
[root@xcn ~] # awk '{print $3 $6}' xcn 
xcn995345781
[root@xcn ~] # awk '{print $3 " " $6}' xcn 
xcn 995345781

方法2:

1
2
3
4
[root@xcn ~] # cut -d" " -f3,6 xcn 
xcn 995345781
 
-d:指定分隔符
1
2
[root@xcn ~] # cut -c 6-8 xcn 
xcn


14.如何查看/etc/services文件的有多少行?

解答:

方法一:

1
2
[root@xcn ~] # wc -l /etc/services 
10774  /etc/services

方法二:

1
2
[root@xcn ~] # cat -n /etc/services |tail -1
  10774  iqobject        48619 /udp                # iqobje

方法三:

1
2
[root@xcn ~] # sed -n '$=' /etc/services 
10774

方法四:

1
2
[root@xcn ~] # awk '{print NR}' /etc/services|tail -1
10774

方法五:

1
2
[root@xcn ~] # grep -n $ /etc/services|tail -1
10774:iqobject        48619 /udp                # iqobject


15.请执行命令取出Linux中eth1的IP地址

法1:

1
2
[root@xcn ~] # ifconfig eth1|grep "inet addr"|cut -d ":" -f 2|cut -d " " -f 1
172.16.1.2

法2:

1
2
[root@xcn ~] # ifconfig eth1|grep "inet addr:"|awk -F ":" '{print $2}'|awk '{print $1}'
172.16.1.2

法3:

1
2
[root@xcn ~] # ifconfig eth1|grep "inet addr"|awk -F "[: ]" '{print $13}'
172.16.1.2

法4:

1
2
[root@xcn ~] # ifconfig eth1|sed -n '/inet addr/p'|sed 's#^.*addr:##g'|sed 's#Bc.*$##g'
172.16.1.2

思路:

匹配需要的目标(获取的字符串如上文的ip)前的字符串一般用以..开头(^.*)来匹配开头,匹配的结尾写上实际的字符,如:"^.*addr:"表达式就匹配"   inet addr:",而处理需要的目标后的内容一般在匹配的开头写上实际的字符,而结尾是用以...结尾(.*$)来匹配。如:Bcast:.*$部分表示匹配“Bcast:10.0.0.255 Mask:255.255.255.0”.

法5:

1
2
[root@xcn ~] # ifconfig eth1|sed -n 's#^.*addr:\(.*\)  Bcast.*$#\1#gp'
172.16.1.2


sed小括号()分组功能

sed 's/■/▲/标签'    #斜线可以被其他字符替换

■部分可以用正则,▲的部分不能用正则

()分组(group)再■部分使用()括起来的内容,再▲的位置可以用使用\1调用前面括号内容

如果有多个括号,那么一次\2,\3调用第二个第三个括号,以此类推



16.如何取得xcn文件的权限对于的数字内容,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字

r  read   w write   -没有x执行

r  4

w 2

x  1

-  0

法1:

1
2
[root@xcn ~] # stat xcn|sed -n '4p'|awk -F "[/(]" '{print $2}'
0644

法2:

1
2
[root@xcn ~] # stat xcn|head -4|tail -1|awk -F "[/(]" '{print $2}'
0644

法3:

1
2
[root@xcn ~] # stat xcn|sed -n 's#^.*s: (\([0-9].*\)/-r.*$#\1#gp'
0644





本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1945114

相关文章
|
12天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
33 9
|
2天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
2天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0
|
5天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
11 0
|
6天前
|
域名解析 网络协议 Linux
Linux 中的 Nslookup 命令怎么使用?
【4月更文挑战第12天】
25 6
Linux 中的 Nslookup 命令怎么使用?
|
7天前
|
运维 网络协议 Unix
18.系统知识-Linux常用命令
18.系统知识-Linux常用命令
|
7天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
|
8天前
|
Linux Go
Linux命令Top 100驱动人生! 面试必备
探索Linux命令不再迷茫!本文分10部分详解20个基础命令,带你由浅入深掌握文件、目录管理和文本处理。 [1]: <https://cloud.tencent.com/developer/article/2396114> [2]: <https://pan.quark.cn/s/865a0bbd5720> [3]: <https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH>
58 0
|
8天前
|
运维 网络协议 安全
neutron 运维命令
OpenStack Neutron是OpenStack的网络服务,它负责管理虚拟机和其他计算资源之间的网络连接。Neutron提供API和插件,支持多种网络拓扑和服务,包括虚拟网络和物理网络的配置、管理和调度。它还支持IP地址分配、网络连接和安全策略等。
8 1
|
10天前
|
缓存 运维 监控
Linux系统监控利器:探索常用命令及数据保存技巧
Linux系统监控利器:探索常用命令及数据保存技巧
29 4
Linux系统监控利器:探索常用命令及数据保存技巧