查看系统版本:

[root@neo ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@neo ~]# uname -r
2.6.32-696.el6.x86_64
[root@neo ~]# uname -m
x86_64
[root@neo ~]# uname -a
Linux neo 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@neo ~]# # cat /etc/redhat-release 查看系统版本, uname -r 查看内核版本 , 通常用这两个命令即可;uname -m 显示系统位数

变量

1. 查看变量的内容:
# echo $变量名,如:
echo $PS1 [root@neo ~]# echo $PS1
[\u@\h \W]\$ 2. 向变量中放入内容:
# 变量名=内容 # PS1 是系统的环境变量;环境变量一般都是大写的,而且在系统中任何的地方都可以使用。PS1 这个环境变量就是控制命令行样子的
[root@neo ~]# echo $PS1
[\u@\h \W]\$
# \u 是指当前用户名,\h 是指当前主机名(hostname),\W 是指当前的位置,相当于pwd (工作中 PS1 这个变量一般不要改)

linux系统优化:

1. 添加普通用户账号

1.1 linux 用户分类:
root 用户 --- linux 中的皇帝
普通用户
1.2 添加普通用户
# 添加普通用户的命令: useradd 普通用户名; 查看用户的信息(以及用户是否存在)的命令: id 普通用户名;为普通用户设置密码: passwd 普通用户名
[root@neo ~]# useradd oldboy
[root@neo ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
[root@neo ~]# id neo
id: neo: No such user
[root@neo ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@neo ~]#
[root@neo ~]# passwd oldboy
Changing password for user oldboy.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@neo ~]# 1.3 切换用户:
# 切换用户的命令: su - 用户名 ; 查看当前用户的命令: whoami
[root@neo ~]# whoami
root
[root@neo ~]# su - oldboy
[oldboy@neo ~]$ whoami
oldboy 1.4 退出当前用户
# 退出当前用户的命令: 快捷键 --- ctrl + d ;也可以用 su - root (但是root密码会比较复杂,不方便)
[oldboy@neo ~]$ # ctrl + d
[oldboy@neo ~]$ logout
[root@neo ~]#

2. 关闭 SELinux

# 查看 SELinux 的状态的命令:getenforce   (Enforcing 表示 SELinux正在运行;permissive 表示 SELinux 临时关闭;disabled 表示 SELinux永久关闭)

2.1 临时关闭 SELinux (重启服务器后 SELinux会重新开启)
# 命令: setenforce 0
[root@neo ~]# getenforce
Enforcing
[root@neo ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@neo ~]# setenforce 0
[root@neo ~]#
[root@neo ~]# getenforce
Permissive 2.2 永久关闭 SELinux
# 修改 /etc/selinux/config 这个配置文件:把 SELINUX=enforcing 改成 SELINUX=disabled (重启服务器后才会生效)
[root@neo ~]# vim /etc/selinux/config
[root@neo ~]# grep 'SELINUX=' /etc/selinux/config
# SELINUX= can take one of these three values:
SELINUX=disabled
[root@neo ~]#

3. 关闭 iptables

# 服务器对外使用时(服务器有外网),需要开启防火墙
# 服务器只有内网(局域网)时,一般要关闭防火墙(并发高时也需要关闭防火墙) # 查询防火墙是否在运行的命令: /etc/init.d/iptables status
[root@neo ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
num target prot opt source destination [root@neo ~]#
# 上面的信息表示防火墙正在运行 # 临时关闭防火墙:(工作中关闭防火墙时建议关闭两次)
[root@neo ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@neo ~]# /etc/init.d/iptables stop
[root@neo ~]#
[root@neo ~]# /etc/init.d/iptables status
iptables: Firewall is not running. # 这是临时关闭防火墙的方法;系统重启后防火墙会重新开启,因为此时的防火墙会开机自动启动
# 查看开机启动项的命令: chkconfig # 如果 3:on 表示是开机启动的软件
# 查看防火墙是否开机启动: chkconfig | grep iptables
[root@neo ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 永关闭防火墙:设置防火墙开机时,不自动启动
# 让防火墙开机时,不自动启动的命令: chkconfig iptables off
[root@neo ~]# chkconfig iptables off
[root@neo ~]#
[root@neo ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off # 开机启动防火墙: chkconfig iptables on
[root@neo ~]# chkconfig iptables on
[root@neo ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

4. 防止显示中文乱码

# 查看系统的字符集的命令:echo $LANG  # LANG 也是环境变量,表示系统用的什么字符集
[root@neo ~]# echo $LANG
en_US.UTF-8
# 语言.字符集 # 修改字符集
4.1 临时修改: export LANG=zh_CN.UTF-8 # 往环境变量中放入内容时,需要在其前面加上 export
[root@neo ~]# export LANG=zh_CN.UTF-8
[root@neo ~]# echo $LANG
zh_CN.UTF-8 4.2 永久修改字符集:
[root@neo ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[root@neo ~]#
# 把上面的 LANG="en_US.UTF-8" 改成你想要的字符集就能永久改变系统字符集(但不要这么做) # 利用 source 让上面的 /etc/sysconfig/i18n 生效
[root@neo ~]# source /etc/sysconfig/i18n
[root@neo ~]# echo $LANG
en_US.UTF-8
[root@neo ~]# # 中文乱码的原因:
linux使用的字符集 与 远程连接工具使用的字符集(如xshell)不一致

Linux目录结构

1. 目录结构特点

1.1 一切从根开始
1.2 Linux中每个设备可以挂在任何目录上面
1.3 Linux下面的设备(光盘/磁盘分区)没有挂载无法使用;挂载相当于给 磁盘分区/设备 开了一个入口,通过入口进入到光盘/磁盘分区 中,这个入口即 挂载点,挂载点本质上就是一些目录

2. Linux目录结构简介

# linux核心目录简介:
bin ----> 存放命令、二进制文件的存放目录,binary
boot ---> 系统引导程序 + 【系统的内核】
dev ----> device ,设备、光盘、硬盘; <---> 磁盘挂载才能使用
etc ----> 存入系统的配置文件
home ---> 普通用户的家目录
lib ----> libary,库,库文件
lib64 --> 系统是 64位,库文件
host+found ---> 磁盘或文件系统损坏 断电 临时文件位置
media --->
mnt ---> 临时的挂载点 <--> 挂载点,目录,给设备提供了一个入口
opt ---> option;第三方软件安装在这里
proc ----> 虚拟的目录;目录里面的内容是内存中信息(内核、进程、软件) <---> 为了解决:linux 中一切皆文件
root ---> root用户的家目录
sbin ---> super binary;超级命令,只有root用户能用的命令
selinux ---> selinux 及他的配置文件存放的位置
srv --->
sys ---> 虚拟的目录,内存信息
tmp ---> temp;临时文件的存放位置
usr ---> 存放用户的程序
var ---> variable;经常变换的文件,系统日志

3. Linux目录详解

/etc 目录下面的内容:

# /etc 目录下面的内容:
/etc/sysconfig/network-scripts/ifcfg-eth0 # 网卡的配置文件
/etc/resolv.conf # 文件目录详解
/etc/hosts
/etc/sysconfig/network
/etc/fstab
/etc/rc.local
/etc/inittab
/etc/init.d
/etc/profile
/etc/bashrc

/etc/sysconfig/network-scripts/ifcfg-eth0

#  /etc/sysconfig/network-scripts/ifcfg-eth0
[root@neo ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ### 网卡的名字
HWADDR=00:0c:29:26:b5:57 #@@ hardware address 硬件地址;MAC地址
TYPE=Ethernet ### 互联网
UUID=7aef3188-c7e3-49a9-ace8-c20bae02381a ### UUID,系统中唯一的标识
ONBOOT=yes #@@ booton 在重启的时候是否开启网卡(自动运行)
NM_CONTROLLED=yes ### 是否能被network软件进行管理
BOOTPROTO=none #@@ 网卡获取ip地址的方式
# 网卡获取ip地址的方式:
# none/static ---> ip地址是固定的
# dhcp ---> 自动获取ip地址 IPADDR=10.0.0.200 #@@ ip address ip地址
NETMASK=255.255.255.0 ### 子网掩码
GATEWAY=10.0.0.2 #@@ 网关(默认的出口)
USERCTL=no ### 是否允许普通用户管理网卡(开、关、重启)
PEERDNS=yes ### PEERDNS=yes 表示 网卡配置文件中的DNS优先于 /etc/resolv.conf; no 的话表示 这两个没有任何关系
IPV6INIT=no
[root@neo ~]# # DNS1=223.5.5.5
# DNS2=223.6.6.6 # DNS
# 把使用的域名转换为IP地址 ---> DNS : 域名解析服务/系统 ### 阿里云的DNS:
# 223.5.5.5
# 223.6.6.6 ### 114 的DNS:
# 114.114.114.144
# 114.114.115.115 # 谷歌的DNS:
# 8.8.8.8 ### 常见的DNS有关的错误
[root@neo ~]# yum install tree
Loaded plugins: fastestmirror, security
Setting up Install Process
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base
[root@neo ~]# Couldn't resolve host 'mirrorlist.centos.org' # resolve ---> 解析; host ---> 域名 # Linux无法上网:
1. ping www.baidu.com # 是否能上网
2. ping 223.5.5.5 # DNS 是否有问题;223.5.5.5 是一个外网IP,此时的ping 不经过 DNS
# 上面两步如果都报错,说明是网络配置有问题;如果第1步报错,第2步不报错,说明是DNS的有问题 # 修改DNS:
# 在网卡配置文件中添加上:
DNS1=223.5.5.5
DNS2=223.6.6.6 [root@neo ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@neo ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:26:b5:57
TYPE=Ethernet
UUID=7aef3188-c7e3-49a9-ace8-c20bae02381a
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.200
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
USERCTL=no
PEERDNS=yes
IPV6INIT=no
DNS1=223.5.5.5
DNS2=223.6.6.6
[root@neo ~]#
# 修改完上述配置文件后,需要重启网卡让配置文件生效
# 方式一:重启某一个网卡: ifdown eth0 && ifup eth0 # && 表示前一个命令成功后就执行后一个命令
[root@neo ~]# ifdown eth0 && ifup eth0
Determining if ip address 10.0.0.200 is already in use for device eth0...
[root@neo ~]# # 方式二: 重启所有网卡: /etc/init.d/network restart
[root@neo ~]#
[root@neo ~]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 10.0.0.200 is already in use for device eth0...
[ OK ]
[root@neo ~]#

文件目录详解 ---> /etc/resolv.conf  --->  用于配置DNS

#  文件目录详解 ---> /etc/resolv.conf  --->  用于配置DNS
[root@neo ~]# cat /etc/resolv.conf nameserver 223.5.5.5
nameserver 223.6.6.6 # 网卡配置文件中的DNS优先于 /etc/resolv.conf;配置DNS基本都在 网卡里面配置

修改主机名(hostname)

# 修改主机名(hostname)
# /etc/sysconfig/network 合作可用于修改主机名的文件
# 1. 查看当前的主机名的命令:hostname
[root@neo ~]# hostname
neo # 2. 临时修改主机名: hostname 新主机名 (重新连接xshell后临时主机名生效;重启服务器后临时主机名失效)
[root@neo ~]# hostname NEO
[root@neo ~]#
Connection closed. Type `help' to learn how to use Xshell prompt.
Xshell:\> Connecting to 10.0.0.200:22...
Connection established.
Escape character is '^@]'. WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Thu Mar 14 17:04:49 2019 from 10.0.0.1
[root@NEO ~]# # 3. 永久修改主机名: vim /etc/sysconfig/network # 修改 /etc/sysconfig/network 文件中的 HOSTNAME= (重启服务器后新的主机名生效)
[root@NEO ~]# vim /etc/sysconfig/network
[root@NEO ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=NEO
[root@NEO ~]# hostname
NEO # vi/vim 快捷键:
# 删除光标所在位置到行尾的所有内容(命令行模式下):D
# xshell 快捷键:
# 使用上一个命令的最后一个内容: Esc + .

文件目录详解 ---> /etc/hosts  :IP地址与域名的解析关系 (对主机名进行解析的一个文件)

# 文件目录详解 ---> /etc/hosts  :IP地址与域名的解析关系 (对主机名进行解析的一个文件)
# 在 /etc/hosts 文件中加上: IP 域名
[root@NEO ~]# vim /etc/hosts
[root@NEO ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.200 www.jd.com
[root@NEO ~]# ping www.jd.com
PING www.jd.com (10.0.0.200) 56(84) bytes of data.
64 bytes from www.jd.com (10.0.0.200): icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from www.jd.com (10.0.0.200): icmp_seq=2 ttl=64 time=0.044 ms
^C
--- www.jd.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1919ms
rtt min/avg/max/mdev = 0.022/0.033/0.044/0.011 ms
[root@NEO ~]# # 上述方法的作用大多是用于测试 # Windows 系统下的 hosts 路径:C:\Windows\System32\drivers\etc

文件目录详解 ---> /etc/fstab  ---> 开机的时候自动挂载的文件(开机的进修给每个磁盘分区开一个入口)

# 查看磁盘使用情况的命令: df  或者是 df -h  (通常用 df -h  命令,这个人类可读的信息); -h 这个参数表示 以人类可读的形式显示大小
[root@NEO ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 9213440 1449756 7289012 17% /
tmpfs 242992 0 242992 0% /dev/shm
/dev/sda1 194241 39969 144032 22% /boot
[root@NEO ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.4G 7.0G 17% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
[root@NEO ~]# cat /etc/fstab #
# /etc/fstab
# Created by anaconda on Tue Oct 16 00:33:56 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=cd2601d7-02d0-4070-811f-492ea7b92e85 / ext4 defaults 1 1
UUID=1ba683a1-dd30-4d4a-a3c2-f3d4f5c405aa /boot ext4 defaults 1 2
UUID=062fbbe4-edbd-4b69-8e09-6def7e7d780b swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
[root@NEO ~]# # 上述 cat 信息中,第1列表示 设备/分区;第2列表示 入口/目录/挂载点 # 查看 UUID 分区的 命令: blkid
[root@NEO ~]# blkid
/dev/sda3: UUID="cd2601d7-02d0-4070-811f-492ea7b92e85" TYPE="ext4"
/dev/sda1: UUID="1ba683a1-dd30-4d4a-a3c2-f3d4f5c405aa" TYPE="ext4"
/dev/sda2: UUID="062fbbe4-edbd-4b69-8e09-6def7e7d780b" TYPE="swap"
[root@NEO ~]#

文件目录详解 --->  /etc/rc.local ---> 开机的时候自动运行的文件(需要开机自启动的软件/命令/服务放在这个文件中即可)

# 让一个软件/脚本/服务开机自动运行的方法:
1. 通过 /etc/rc.local # 这种是常用的方式;这个相当于服务器运行软件的清单
2. 通过 chkconfig 管理 开机自启动

文件目录详解  ---> /etc/inittab --->  开机时【运行级别】的配置文件

# 1. linux 运行级别(模式/状态):
0 表示 关机状态(不要把运行级别设置为0)
1 表示 单用户模式/状态(用于root用户密码忘记了;这个状态下没有网络)
2 表示 多用户模式,但是没有NFS
3 表示 完全的多用户模式(命令行模式/文本模式;工作中默认的模式)
4 表示 未使用
5 表示 X11/桌面模式/图形化界面模式
6 重启状态(也不要把运行级别设置为6) # 2. 查看当前的运行级别:
# 查看当前运行级别的命令: runlevel
[root@NEO ~]# runlevel
N 3
[root@NEO ~]# N 3 ---> N 表示上一次的运行级别; 3 表示当前系统的运行级别 # 3. 切换运行级别 --- 临时 (不要切换成0或6)
# 切换运行级别的命令: init 级别
[root@NEO ~]# init 5
[root@NEO ~]# runlevel
3 5 # 4. 永久修改运行级别:修改 /etc/inittab 文件,修改 其中的 id:3:initdefault: 的 id 后的级别 (但是,这个文件不要改)
[root@NEO ~]# tail -1 /etc/inittab
id:3:initdefault:
# 重启服务器后生效

文件目录详解 ---> /etc/init.d  ---> 这个目录下放着一些 系统服务管理的命令(其实是脚本)

文件目录详解 ---> /etc/profile ---> 放着系统环境变量(如:PS1 和 PATH) 和 别名

# 但是 LANG 放在了 /etc/sysconfig/i18n 

文件目录详解 ---> /etc/bashrc ---> 真正存放 别名 的 地方

## 下面两个是 全局生效
/etc/profile # 系统环境变量 和 别名 (别名常用这个)
/etc/bashrc # 真正存放 别名 的地方 ## 下面两个是 当前用户生效
~/.bashrc # 别名
~/.bash_profile # 环境变量 和 别名
# ~ 表示当前用户的家目录: root 用户, ~ 表示 /root ;普通用户 如 oldboy, ~ 表示 /home/oldboy
# linux中以 . 开头的文件 是 隐藏文件 # 上面四个,最常用的是 /etc/profile

/usr/local ---> 编译安装的软件 默认的位置

# /usr/local 即相当于 Windows 系统下的 C:\Program Files
# Linux下安装软件的方法:
1. yum :yum 安装会自动解决安装依赖的软件;软件包管理工具
yum install 软件名 # yum 安装时可用 yum -y 软件名 的命令:-y 表示 遇到 y/N 的询问时自动选 y 2. rpm :rpm 安装时 缺少的东西需要自己解决 3. 编译:
3.1 ./configure # 配置
3.2 make
3.3 make install # 查看软件是否安装成功:
# rpm -qa |grep 软件名 # rpm -qa 会显示出系统中已经安装了的所有的软件
[root@NEO ~]#
[root@NEO ~]# rpm -qa |grep tree
tree-1.5.3-3.el6.x86_64
[root@NEO ~]#

/var/log/messages  ---> 系统默认日志信息

[root@NEO ~]# tail /var/log/messages
Mar 15 13:38:50 NEO kernel: type=1305 audit(1552628328.909:3): audit_pid=1213 old=0 auid=4294967295 ses=4294967295 res=1
Mar 15 13:38:50 NEO irqbalance: Balancing is ineffective on systems with a single cpu. Shutting down
Mar 15 13:38:51 NEO acpid: starting up
Mar 15 13:38:51 NEO acpid: 1 rule loaded
Mar 15 13:38:51 NEO acpid: waiting for events: event logging is off
Mar 15 13:38:52 NEO acpid: client connected from 1382[68:68]
Mar 15 13:38:52 NEO acpid: 1 client rule loaded
Mar 15 13:38:52 NEO kdump: No crashkernel parameter specified for running kernel
Mar 15 13:38:56 NEO abrtd: Init complete, entering main loop
Mar 15 15:17:15 NEO yum[1955]: Installed: tree-1.5.3-3.el6.x86_64

/var/log/secure    ---> 系统用户的登陆信息 (谁 什么时候 从哪里登陆的  是否成功)

[root@NEO ~]# tail /var/log/secure
Mar 15 00:02:51 NEO sshd[1423]: Received signal 15; terminating.
Mar 15 00:02:51 NEO sshd[1582]: Exiting on signal 15
Mar 15 00:02:51 NEO sshd[1582]: pam_unix(sshd:session): session closed for user root
Mar 15 13:38:53 NEO sshd[1423]: Server listening on 0.0.0.0 port 22.
Mar 15 13:38:53 NEO sshd[1423]: Server listening on :: port 22.
Mar 15 13:52:42 NEO sshd[1590]: Accepted password for root from 10.0.0.1 port 3899 ssh2
Mar 15 13:52:42 NEO sshd[1590]: pam_unix(sshd:session): session opened for user root by (uid=0)
Mar 15 15:32:04 NEO sshd[1991]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.1 user=root
Mar 15 15:32:06 NEO sshd[1991]: Failed password for root from 10.0.0.1 port 6193 ssh2
Mar 15 15:32:08 NEO sshd[1992]: Received disconnect from 10.0.0.1: 0:
[root@NEO ~]# grep "Failed password" /var/log/secure # 查看登陆失败的信息
Mar 15 15:32:06 NEO sshd[1991]: Failed password for root from 10.0.0.1 port 6193 ssh2
[root@NEO ~]#

文件目录详解 --> /proc/meminfo  --> 内存信息 : cat /proc/meminfo

# 显示当前系统的内存信息 的命令: free
[root@NEO ~]# free -h
total used free shared buffers cached
Mem: 474M 126M 347M 224K 9.4M 40M
-/+ buffers/cache: 77M 397M
Swap: 767M 0B 767M
[root@NEO ~]#

文件目录详解 --> /proc/cpuinfo --> 查看 cpu 信息

# 查看 cpu 信息 的命令: lscpu ;该命令即相当于 cat /proc/cpuinfo
[root@NEO ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 69
Model name: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
Stepping: 1
CPU MHz: 2401.000
BogoMIPS: 4802.00
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0
[root@NEO ~]#

文件目录详解 --> /proc/loadavg --> 系统的负载

# 负载:系统的繁忙程度
# 查看系统负载的命令: w
[root@NEO ~]# w
17:59:12 up 7 min, 1 user, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 17:52 0.00s 0.02s 0.00s w
[root@NEO ~]# # load average: 0.00, 0.01, 0.00 ---> 三个数分别表示: 最近1分钟、最近5分钟、最近15分钟 的 平均负载
# 系统繁忙时,系统的负载接近 cpu 的核心数量

文件目录详解 --> /proc/mounts --> 显示系统的挂载信息

# 系统的挂载信息也可以通过该命令查看: def -h
[root@NEO ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 7.0G 18% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
[root@NEO ~]# # findmnt 命令 即相当于 cat /proc/mounts (findmnt 作为了解)

Linux系统的启动过程:

PATH 环境变量:

1. 环境变量: (查看环境变量可以用命令:env )

1.1 大部分环境变量是大写;
1.2 在系统大部分地方都可以使用,并且含义相同 # 常用的环境变量:LANG 和 PATH

2. PATH 的含义:

# PATH变量存放的是命令的位置/路径
[root@NEO ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@NEO ~]# # 不同路径之间通过 冒号 分隔

3. PATH的作用:

# linux下面运行命令的过程:
1. 输入命令
2. 在PATH里面 路径进行查找
3. 找到了就运行
4. 找不到就提示 command not found

练习1. 过滤出已知当前目录下 oldboy 中的所有一级目录(一级目录:不包含 oldboy 目录下面的子目录及隐藏目录,即只能是第一级目录)

1. 创建环境:

mkdir /oldboy -p
cd /oldboy
mkdir ext/oldboy test xiaodong xiaofan xingfujie -p
touch jeacen oldboy wodi.gz yingsui.gz #### 如下:
[root@NEO ~]# mkdir /oldboy -p
[root@NEO ~]# cd /oldboy
[root@NEO oldboy]# mkdir ext/oldboy test xiaodong xiaofan xingfujie -p
[root@NEO oldboy]# touch jeacen oldboy wodi.gz yingsui.gz
[root@NEO oldboy]# tree
.
├── ext
│   └── oldboy
├── jeacen
├── oldboy
├── test
├── wodi.gz
├── xiaodong
├── xiaofan
├── xingfujie
└── yingsui.gz 6 directories, 4 files
[root@NEO oldboy]# # tree 命令:以树形显示目录结构
-L 数字 ---> 最多显示几层目录
-d ---> 只显示目录 # 查询某个软件是否安装:
rpm -qa # 显示出系统中已经安装了的所有软件
rpm -qa |grep tree # 查询某个软件是否安装 # rpm 是 rpm包管理命令:
-qa ---> 查询所有;q 表示查询,a 表示所有
-ql 软件名 ---> 查看某个软件包里面的内容 (软件名要完全正确) # rpm -ql 如下:
[root@NEO oldboy]# rpm -ql tre
package tre is not installed
[root@NEO oldboy]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.5.3
/usr/share/doc/tree-1.5.3/LICENSE
/usr/share/doc/tree-1.5.3/README
/usr/share/man/man1/tree.1.gz
[root@NEO oldboy]#

方法一: tree 命令

[root@NEO oldboy]# tree -d /oldboy/
/oldboy/
├── ext
│   └── oldboy
├── test
├── xiaodong
├── xiaofan
└── xingfujie 6 directories
[root@NEO oldboy]# tree -dL 1 /oldboy/
/oldboy/
├── ext
├── test
├── xiaodong
├── xiaofan
└── xingfujie 5 directories # tree -d 表示只查看目录; tree -dL 1 表示只查看第1层目录

方法二: find 命令

[root@NEO oldboy]# find -type d       # 找出所有的目录
.
./xiaofan
./xingfujie
./xiaodong
./ext
./ext/oldboy
./test
[root@NEO oldboy]# find -maxdepth 1 -type d # 找出所有的目录,并且只找第一层:-maxdepth 1 ;-maxdepth 1 建议写在 -type d 前面,要不然会出现 warning (-maxdepth 表示最大的深度)
.
./xiaofan
./xingfujie
./xiaodong
./ext
./test
[root@NEO oldboy]# find -maxdepth 1 -type d -name "." # 找出第1层、名为 “.” 的所有目录
.
[root@NEO oldboy]# find -maxdepth 1 -type d ! -name "." # 找出第1层、名字不为 “.” 的所有目录;find 命令中 取反 的符号为 “!”
./xiaofan
./xingfujie
./xiaodong
./ext
./test
[root@NEO oldboy]#

方法三: ls -l 的方法

[root@NEO oldboy]# ls -l
total 20
drwxr-xr-x 3 root root 4096 Mar 15 19:21 ext
-rw-r--r-- 1 root root 0 Mar 15 19:21 jeacen
-rw-r--r-- 1 root root 0 Mar 15 19:21 oldboy
drwxr-xr-x 2 root root 4096 Mar 15 19:21 test
-rw-r--r-- 1 root root 0 Mar 15 19:21 wodi.gz
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaodong
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaofan
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xingfujie
-rw-r--r-- 1 root root 0 Mar 15 19:21 yingsui.gz
[root@NEO oldboy]# ls -l |grep "^d" # d 表示 目录, ^ 表示以什么开头
drwxr-xr-x 3 root root 4096 Mar 15 19:21 ext
drwxr-xr-x 2 root root 4096 Mar 15 19:21 test
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaodong
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaofan
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xingfujie
[root@NEO oldboy]#

方法四: awk

[root@NEO oldboy]# ls -l
total 20
drwxr-xr-x 3 root root 4096 Mar 15 19:21 ext
-rw-r--r-- 1 root root 0 Mar 15 19:21 jeacen
-rw-r--r-- 1 root root 0 Mar 15 19:21 oldboy
drwxr-xr-x 2 root root 4096 Mar 15 19:21 test
-rw-r--r-- 1 root root 0 Mar 15 19:21 wodi.gz
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaodong
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaofan
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xingfujie
-rw-r--r-- 1 root root 0 Mar 15 19:21 yingsui.gz # 从上面的 ls -l 可以看出,目录的第2列都大于1 [root@NEO oldboy]# ls -l |awk '$2>1' # awk 后面要用 单引号;awk命令中,$2 表示第2列
total 20
drwxr-xr-x 3 root root 4096 Mar 15 19:21 ext
drwxr-xr-x 2 root root 4096 Mar 15 19:21 test
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaodong
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaofan
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xingfujie
[root@NEO oldboy]#

方法五: ls -F

# ls 命令的 -F 参数会给目录的结尾加上一个 /
[root@NEO oldboy]# ls
ext jeacen oldboy test wodi.gz xiaodong xiaofan xingfujie yingsui.gz
[root@NEO oldboy]# ls -F
ext/ jeacen oldboy test/ wodi.gz xiaodong/ xiaofan/ xingfujie/ yingsui.gz
[root@NEO oldboy]# ls -lF
total 20
drwxr-xr-x 3 root root 4096 Mar 15 19:21 ext/
-rw-r--r-- 1 root root 0 Mar 15 19:21 jeacen
-rw-r--r-- 1 root root 0 Mar 15 19:21 oldboy
drwxr-xr-x 2 root root 4096 Mar 15 19:21 test/
-rw-r--r-- 1 root root 0 Mar 15 19:21 wodi.gz
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaodong/
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xiaofan/
drwxr-xr-x 2 root root 4096 Mar 15 19:21 xingfujie/
-rw-r--r-- 1 root root 0 Mar 15 19:21 yingsui.gz
[root@NEO oldboy]# ls -F |grep '/'
ext/
test/
xiaodong/
xiaofan/
xingfujie/
[root@NEO oldboy]#

练习2. 假如当前目录是 /oldboy ,现在需要进入到 /tmp 目录下进行操作,执行的命令是: cd /tmp ,操作完毕后,需要快速返回上一次进入的目录,即 /oldboy 目录,该如何做 ?(不能用 cd /oldboy 命令)

# 简单说:快速回到上一次所在的位置/目录 的命令: cd -
[root@NEO oldboy]# pwd
/oldboy
[root@NEO oldboy]# cd /tmp/
[root@NEO tmp]# cd -
/oldboy
[root@NEO oldboy]# # - 是一个环境变量; cd - 相当于 cd $OLDPWD # cd . ===> # . 表示 当前目录,一般用于 复制/移动: cp /etc/hosts . # 复制到当前目录
# cd .. ===> # 进入到当前目录的上一级目录
# cd ~ ===> # ~ 表示当前用户的家目录; root 用户的家目录是 /root ,普通用户(如 oldboy)的家目录是 /home/oldboy
# cd ===> # 回到当前用户的家目录
# cd - ===> # 回到上一次的位置/路径

练习3. 一个目录中有很多文件(ls查看时好多屏),想最快速度查看到最近更新的文件

# 命令: ls -lt   # ls -l 默认是按照字母的顺序;ls -lt 会按时间降序排序, ls -lrt 会按时间升序排序;-t 按照文件的修改时间进行排序,-r 表示 逆序

练习5. 调试系统服务时,希望能【实时】查看系统日志 /var/log/messages 的更新

tail -f   # -f 表示 显示文件的实时更新
# tailf 即相当于 tail -f

练习6. 打印配置文件 nginx.conf 内容的行号及内容

# 创建环境:
[root@NEO oldboy]# pwd
/oldboy
[root@NEO oldboy]# echo {1..5} # echo {1..5} 能显示出 从1到5
1 2 3 4 5
[root@NEO oldboy]# echo stu{01..10}
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
[root@NEO oldboy]# echo stu{01..10}|xargs -n1 # xargs -n1 表示 一列
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
[root@NEO oldboy]# echo stu{01..10}|xargs -n1 >nginx.conf
[root@NEO oldboy]# cat nginx.conf
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
[root@NEO oldboy]# # 方式一: cat -n 命令
# cat -n 命令: 查看内容及行号
[root@NEO oldboy]# cat -n nginx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10
[root@NEO oldboy]# # 方式二: vi/vim
# 通过 vi/vim 进入文件后, :set nu ---> 显示行号 ; :set nonu ---> 取消显示行号 (只是显示、取消显示行号,不会修改文件内容)
[root@NEO oldboy]# vim nginx.conf
"nginx.conf" 10L, 60C 1,1 All
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10 ~
~
~
~
~
:set nu # 方式三: grep
# grep -n 命令: 给找到的内容加上行号
[root@NEO oldboy]#
[root@NEO oldboy]# grep -n 'stu01' nginx.conf
1:stu01
[root@NEO oldboy]# grep -n 'stu' nginx.conf
1:stu01
2:stu02
3:stu03
4:stu04
5:stu05
6:stu06
7:stu07
8:stu08
9:stu09
10:stu10
[root@NEO oldboy]# grep -n "." nginx.conf # grep 命令中的 . 是正则表达式的内容;表示任何一个符号
1:stu01
2:stu02
3:stu03
4:stu04
5:stu05
6:stu06
7:stu07
8:stu08
9:stu09
10:stu10
[root@NEO oldboy]# # 方式四: awk
# awk '{print NR,$0}' # awk 后面的 {} 中, print 表示 显示, NR 表示行号,$0 表示这一行的内容放在了 $0 里面,$数字 表示 某一列
[root@NEO oldboy]# awk '{print NR,$0}' nginx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10
[root@NEO oldboy]# # 方法五: sed
# sed '=' 命令: 显示行号和内容;sed 中 = 表示给这一行加上行号
[root@NEO oldboy]# sed '=' nginx.conf
1
stu01
2
stu02
3
stu03
4
stu04
5
stu05
6
stu06
7
stu07
8
stu08
9
stu09
10
stu10
[root@NEO oldboy]# sed '=' nginx.conf |xargs -n2 # -n2 表示 每行两列
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10
[root@NEO oldboy]#

练习4. 已知 apache 服务的访问日志按天记录在服务器本地目录 /app/logs 下,由于磁盘空间紧张,现在要求只能保留最近7天的访问日志。请给出解决办法或配置或处理命令(提示:可以从 apache 服务配置上着手,也可以从生成出来的日志上着手)

# 数据模拟命令:
mkdir -p /app/logs
cd /app/logs
for time in {01..20};do date -s "201705$time";touch access_www_$(date +%F).log ;done
date -s "" # date 命令: 显示系统的时间;date -s ---> 修改系统的时间 # find -mtime 7 ---> 找到第前7天修改的文件;
# find -mtime +7 ---> 找到7天之前修改的文件;
# find -mtime -7 ---> 找到最近7天修改的文件; # 方法一:
# find -type f -name "*.log" -mtime +7|xargs rm -f
find -type f -name "*.log" -mtime +7|xargs ls -l # 方法二:
ls -l $(find -type f -name "*.log" -mtime +7) # 方法三:
find -type f -name "*.log" -mtime +7 -exec ls -l {} \; # find -exec {} \; 命令: find 找到的内容全部都放到 {} 中

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

[root@NEO ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@NEO ~]# # 上面的数字即表示 在哪个级别上把 iptables 开机是否自启动 # 只在3级别上把 iptables 开机自启动 : chkconfig --level 3 iptables on
[root@NEO ~]# chkconfig --level 3 iptables on
[root@NEO ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
[root@NEO ~]# # chkconfig --level ---> 指定运行级别进行操作

练习8. /etc/ 目录为linux 系统的默认配置文件及服务启动命令的目录

  1. 用 tar 打包/etc 整个目录(打包及压缩)
  2. 把a点命令的压缩包,解压到 /tmp 指定目录下 (最好只用 tar 命令实现: -C 路径

  3. 用 tar 打包 /etc 整个目录 (打包及压缩,但需要排除 /etc/services 文件)
# tar 命令: 创建、查看、解压 压缩包

# 创建压缩包
tar zcvf /tmp/etc.tar.gz /etc/ # 通过 gzip 创建一个压缩包,压缩包放在 /tmp 下;zcvf --> 创建压缩包; /tmp/etc.tar.gz --> 压缩包存放的位置; /etc/ --> 被压缩的目标 (被压缩的目录可以有多个)
# z ---> 通过 gzip 工具进行压缩;z 表示 压缩,没有 z 表示打包
# c ---> create,创建压缩包
# v ---> verbose,显示执行过程
# f ---> file, f 后面要接上压缩包的名字 # 查看压缩包的内容
tar ztf /tmp/etc.tar.gz
# z ---> gzip
# t ---> list,显示压缩包的内容 # 解压 压缩包:
# 1. 先进入到 /tmp/ 目录
# 2. 解压压缩包
cd /tmp/
tar zxf etc.tar.gz # 或者 tar zxvf etc.tar.gz # 默认是解压到当前目录 [root@NEO tmp]# tar zxf etc.tar.gz
tar: etc/prelink.cache: time stamp 2019-03-16 07:34:21 is 24187.13954116 s in the future
[root@NEO tmp]# ll
total 9512
drwxr-xr-x 78 root root 4096 Mar 16 00:01 etc
-rw-r--r-- 1 root root 9732526 Mar 16 00:28 etc.tar.gz
[root@NEO tmp]# # 将上面的命令简写:
# 创建压缩包:
tar
zcvf
zcf ---> 打包 并 压缩
cf ---> 打包(在一起) # 查看压缩包的内容:
tar
ztf
tf # 解压:
tar
zxvf
xf
# 解压时也可以通过 -C 参数指定解压路径 # tar 命令的提示:
[root@NEO tmp]# tar zcf /tmp/etc.tar.gz /etc/
tar: Removing leading `/' from member names # Removing leading `/' from member names ===> 把压缩包中开头的 '/' 删除 ; /etc/ 变成 etc/
# 所以 tar 命令打包的时候会把压缩包中的文件/目录由 绝对路径 变成 相对路径 # 用 tar 打包 /etc 整个目录 (打包及压缩,但需要排除 /etc/services 文件)
# tar zcf 压缩包名 要压缩的目标 --exclude=文件名
[root@NEO ~]# tar zcf /tmp/etc.tar.gz /etc/
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
[root@NEO ~]# tar zcf /tmp/etc-exclude.tar.gz /etc/ --exclude=/etc/services
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
[root@NEO ~]# ll /tmp/
total 18892
-rw-r--r-- 1 root root 9605653 Mar 16 02:45 etc-exclude.tar.gz
-rw-r--r-- 1 root root 9732526 Mar 16 02:45 etc.tar.gz
[root@NEO ~]#

练习9. 已知如下命令及结果:

mkdir -p /oldboy
echo "I am oldboy,myqq is 123456789">/oldboy/oldboy.txt a. 现在需要从文件中过滤出 "oldboy" 和 "" 字符串;
b. 如果需要从文件中过滤出 "oldboy,123456789" 字符串,请给出命令

a. 现在需要从文件中过滤出 "oldboy" 和 "123456789" 字符串;

# 方法一: sed
# 利用 sed 把不要的东西替换为空
[root@NEO oldboy]# cat oldboy.txt
I am oldboy,myqq is 123456789
[root@NEO oldboy]# sed 's#I am ##g' oldboy.txt
oldboy,myqq is 123456789
[root@NEO oldboy]# sed 's#I am ##g' oldboy.txt |sed 's#,myqq is##g'
oldboy 123456789
[root@NEO oldboy]# # 方法二:sed/tr + awk
# awk 擅长取列,列与列之间的分隔符默认为 空格;第1列用 $1 表示,$2 表示第2列,以此类推
[root@NEO oldboy]# cat oldboy.txt
I am oldboy,myqq is 123456789
[root@NEO oldboy]# awk '{print $3,$5}' oldboy.txt
oldboy,myqq 123456789
[root@NEO oldboy]# # 思路:先用 sed 把 , 替换为 空格,再用 awk 取出第3列 和 第6列
[root@NEO oldboy]# sed 's#,# #g' oldboy.txt
I am oldboy myqq is 123456789
[root@NEO oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$6}'
oldboy 123456789
[root@NEO oldboy]# # 替换 的另一种方式: tr
# tr "," " " <oldboy.txt # 把 , 替换为 空格,利用 < 进行输入重定向
[root@NEO oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 123456789
[root@NEO oldboy]# tr "," " " <oldboy.txt |awk '{print $3,$6}'
oldboy 123456789
[root@NEO oldboy]# # 方法三: 利用 awk 指定多个分隔符号
# awk -F 可以指定新的的分隔符 # 指定一个分隔符号:awk -F "分隔符"
[root@NEO oldboy]# cat oldboy.txt
I am oldboy,myqq is 123456789
[root@NEO oldboy]# awk -F "," '{print $1}' oldboy.txt
I am oldboy
[root@NEO oldboy]# # 指定多个分隔符号: awk -F "[多个分隔符号]"
[root@NEO oldboy]# cat oldboy.txt
I am oldboy,myqq is 123456789
[root@NEO oldboy]# awk -F "[, ]" '{print $3,$6}' oldboy.txt
oldboy 123456789
[root@NEO oldboy]# # awk -F "[, ]" # 指定以 , 和 空格 作为分隔符号

b. 如果需要从文件中过滤出 "oldboy,123456789" 字符串,请给出命令

# awk 中的 '{print $3,$6}'  中的 , 相当于 空格,如果想在结果中显示 "," , 可以用下面的方法:(加上 "")
[root@NEO oldboy]# cat oldboy.txt
I am oldboy,myqq is 123456789
[root@NEO oldboy]# awk -F "[, ]" '{print $3","$6}' oldboy.txt
oldboy,123456789
[root@NEO oldboy]# # awk '{print ""}' 中的 "" 中的内容会原封不动的显示出来

练习10. 如何查看 /etc/services 文件中有多少行?

# wc -l 文件 ---> 统计文件中有多少行
[root@NEO oldboy]# wc -l /etc/services
10774 /etc/services
[root@NEO oldboy]# # 查看 sshd 远程连接进程是否在运行:
ps -ef ---> 显示系统中正在运行的进程
[root@NEO oldboy]# ps -ef |grep "sshd"
root 1422 1 0 00:01 ? 00:00:00 /usr/sbin/sshd
root 1702 1422 0 02:43 ? 00:00:00 sshd: root@pts/1
root 1816 1704 0 04:22 pts/1 00:00:00 grep sshd
[root@NEO oldboy]# # 上面第一行 表示 sshd 的进程,第一行下面的 表示 创建的连接 [root@NEO oldboy]# ps -ef |grep "/sshd" # 加上 / 能过滤出 sshd 的进程
root 1422 1 0 00:01 ? 00:00:00 /usr/sbin/sshd
root 1818 1704 0 04:24 pts/1 00:00:00 grep /sshd
[root@NEO oldboy]# # 扩展:
[root@NEO oldboy]# ps -ef |grep "/sshd"|wc -l
2
[root@NEO oldboy]# # 上面的结果 “2” 表示 进程运行正常
# wc -l 的作用: 统计出现的次数

练习11. 过滤出 /etc/services 文件包含 3306 或 1521 两个数字所在行的内容

# grep 中的 “或者” 用 | 来表示,此时不能再用 grep ,而是 egrep (grep 不支持 | 这种正则表达式); egrep 相当于 grep -E,它支持高级的正则
[root@NEO oldboy]# egrep "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@NEO oldboy]#

练习12. 命令行及 shell 中加单引号和加双引号的区别:

# 单引号: 所见即所得,吃啥吐啥(单引号中的内容会原封不动的显示出来)
# 双引号: 双引号中的内容和单引号的类似,但双引号中的 特殊符号 会被解析、运行
[root@NEO oldboy]# echo '$LANG $(hostname) `pwd`'
$LANG $(hostname) `pwd`
[root@NEO oldboy]# echo "$LANG $(hostname) `pwd`"
en_US.UTF-8 NEO /oldboy
[root@NEO oldboy]#
[root@NEO oldboy]# echo "hello world $LANG $(hostname) `pwd`"
hello world en_US.UTF-8 NEO /oldboy

Linux(3):linux目录结构的更多相关文章

  1. 深入理解linux系统的目录结构(总结的非常详细)

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  2. linux系统的目录结构

    前言 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要 ...

  3. linux分区,文件系统,目录结构概述

    1.Linux中如何表示硬盘,分区 Linux内核读取光驱,硬盘等资源时均通过“设备文件”的形式进行,因此在linux系统中,将硬 盘和分区表示为不同的文件.具体表述形式如下: 硬盘:对于IDE接口的 ...

  4. (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作

    Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...

  5. Linux文件系统的目录结构

    Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...

  6. Linux 01 Liunx目录结构及文件基本操作

    Linux目录结构及文件基本操作 1.Linux的文件组织目录结构(遵循FHS标准) FHS(Filesystem Hierarchy Standard)标准:多数Linux版本采用这种文件组织形式, ...

  7. Linux文件系统的目录结构详解

    Linux文件系统的目录结构详解   一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...

  8. Linux系统的目录结构及常见目录总结

    Linux系统的目录结构(必须掌握的内容) 所有目录只有一个顶点/(根),所有目录的起点. 只有一棵树 Linux的目录结构也是有规律的,而且也是按照类别组织的. 应用程序 /usr/bin 数据文件 ...

  9. linux学习笔记-目录结构(1)

    每个linux系统的目录结构差不多,因为有FHS(Filesystem Hierarchy Standard)标准的规范. FHS的重点在于规范每个特定的目录下应该要放什么样的数据. FHS依据文件系 ...

  10. Linux 系统的目录结构_【all】

    Linux系统的目录结构 /:最大根目录,存放系统程序 /etc: 加载配置文件好服务启动命令,系统配置文件 /etc/exports /etc/hosts /bin:binaries 存放命令 /s ...

随机推荐

  1. 关于line-height的理解(如何实现psd稿件上下文字距离为10px)

  2. 《精通css》笔记

    第2章    选择器,注释 1.要知道常用选择器(id选择器,类选择器,类型选择器,后代选择器,伪类选择器(文档结构之外)) 通用选择器(*{    }) 高级选择器(子选择器,相邻同胞选择器,属性选 ...

  3. Android手机屏幕投射到电脑神器Vysor

    做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机 ...

  4. 在Servlet中使用@Autowire的方法

    在你调用的Servlet中添加如下代码: public void init(ServletConfig config) { try { super.init(config); SpringBeanAu ...

  5. 2019年今日头条机试_JAVA后台岗_第二题

    使用map的递推,java对象做key需要重写equeal,hashCode方法,使拥有相同属性值的对象被识别为同一对象. import java.util.*; class Cat{ public ...

  6. window Chrome 下允许跨域访问服务端接口设置

    关闭chrome,使用cmd命令进入chrome安装目录cd C:\Program Files (x86)\Google\Chrome\Application 然后使用命令打开chromechrome ...

  7. python基础一 day9 函数升阶(2)

    def max(a,b): return a if a>b else bprint(max(1, 2)) # 函数进阶# a = 1# def func():# print(a)# func() ...

  8. 利用CWinThread实现跨线程父子MFC窗口

    利用CWinThread实现跨线程父子MFC窗口 MFC对象只能由创建该对象的线程访问,而不能由其他线程访问. 不遵守该准则将导致断言(assertion)或者无法预知的程序行为等运行期错误. 在多线 ...

  9. JavaSE-25 AWT

    学习要点 关于AWT AWT容器 布局管理器 AWT组件 事件处理 关于AWT java.awt包与子包 AWT软件包 说明 import  java.awt.*; 基本组件使用工具 import  ...

  10. vue 父子组件的加载顺序

    一.加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount ...