天天看点

Linux 基础知识及命令(一)cat >mm.txt <<EOF

一、基础知识

1.1 快捷键

——ctrl +z 将正在运行的程序送到后台

——ctrl +d 退出当前终端

——ctrl +c 在终端上终端命令或进程

——ctrl +L 清屏

——ctrl + A 移动光标到行首

——ctrl +U 擦除从当前光标位置到行首的全部内容

——ctrl +k 擦除从当前光标位置到行尾的全部内容

——ctrl +w 擦除光标位置前的单词

——ctrl +y 粘贴

——ctrl +p 查看上一个命令或者用 上键

——ctrl +R 搜索历史命令

——alt + . 复制上一条命令的参数

——ctrl +m 相当于回车键

——ctrl +shift +t 切换终端

++++++++++++++++++++++++++++++++++++++++++++++++++

1.2 特殊符号

—— ~ 用户主目录

—— ` 反引号,用来命令替换

—— # 注释

—— $ 变量取值

—— & 后台进程工作

—— ? 代表任何单一字符

—— * 代表任何字符

—— - 普通文件

—— d 目录文件

—— l 符号链接文件

—— p 管道文件

—— s socket 文件

—— b 块设备文件

—— c 字符设备文件

++++++++++++++++++++++++++++++++++++++++++++++++++

1.3 常识

1.3.1 man 手册页组成的内容说明

——HEADER 标题

——NAME 命令/函数的功能描述

——SYNOPSIS 命令/函数 用法的简单描述

——AVAILABILITY 可用性说明

——DESCRPTION 命令/函数的详细说明

——OPTION 该命令的所有可选项说明

——RETURN VALUE 列出函数返回值

——ERRORS 列出出错的值和引起错误的原因

——BUGS 已知的错误和警告

——example 示例

+++++

1.3.2 命令替换: “ $()” 和 “ 两个反引号”

命令1 $(命令2)

+++++++

1.3.3 Linux 系统结构中的常见的目录

—— /home 包含Linux系统上个用户的主目录,子目录默认以该用户名命名

—— /root 是root用户的主目录

—— /bin 包含常用的命令文件

—— /sbin 包含系统管理员和root用户所使用的命令文件

—— /dev 包含大部分的设备文件,比如磁盘、光驱等

—— /lib 包含Linux系统的共享文件和内核模块文件

—— /lib64 包含64位版本Linux系统的共享文件和内核文件

—— /tmp 包含一些临时文件

—— /mnt 手动为某些设备(比如硬盘)挂载提供挂载目录

—— /boot 包含Linux 系统的内核文件和引导装载程序(GRUB)文件

—— /opt 包含某些第三方应用程序的程序安装文件

—— /media 由系统自动为某些设备(一般为光盘、U盘设备)挂载提供挂载目录

—— /var 该目录存放不经常变化的数据,如系统日志、打印队列、DNS数据队列等

—— /etc 包含Linux系统上大部分的配置文件,建议修改前配置文件之前先备份

—— /usr 包含可以供所有用户使用的程序和数据

—— /srv 存储一些服务启动之后所需要取用的资料目录

—— /run 一个临时文件系统,一些程序或者服务启动以后,会将它们的PID放置在该目录中

—— /sys 在Linux 系统提供热插拔能力的同时,该目录包含所检测到的硬件设置,转换成/dev目录中设备

—— /proc 是一个虚拟的文件系统,由内核在内存产生的,用于提供系统的相关信息。

++++++++

1.3.4 文件颜色代表含义:

绿色 ——可执行文件

红色 ——压缩文件

深蓝色 ——目录

浅蓝色 ——链接文件

黄色 ——设备文件包括块设备文件和字符设备文件

白色 ——一般文件

灰色 —— 其他文件

红色闪烁 ——链接文件有问题

++++++

1.3.5 文件类型的标记

/ ——目录

@ ——符号链接文件

  • —— 可执行文件

    | ——管道文件

    = 表示 socket 文件

    没有标记 ——普通文件

    ++++++

    1.3.6 硬/软链接

    硬链接文件的限制:不允许给目录创建硬链接;只有在统一文件系统中文件之间才能创建链接。

    硬链接记录的是目标的inode,硬链接像是备份

    软连接也叫符号链接,类似与快捷方式,软链接记录是目标的路径,可以跨区的链接

    使用 ln 命令创建

    ++++++

    1.3.7 文件和目录的属性

    —— a : 只允许在这个文件内容后面追加数据,不允许任何进程覆盖或截断该文件

    ——c :设定文件经压缩再存储,读取时需要经过自动解压操作

    ——d :当dump程序执行时,该文件或目录不会被dump备份

    ——i :文件不能被删除、改名、不能创建文件链接,同时不能写入或者新增neir

    ——s :当一个文件被删除后,其块清零并写回磁盘

    ——S : 当一个文件被修改时,立即将更改同步写入磁盘

    ——u :当删除一个文件时,系统会保留其数据块以便以后能过够恢复这个文件,用来防止意外删除文件或目录

    ——A :设置文件或目录被访问时,它的最后访问时间atime不会被修改

    ——X :可以直接访问压缩文件的内容

    ++++++++++++

    1.3.8 服务端口文件 /etc/services

    小于1024端口启动时,启动者必须是root身份

    常用服务端口:

    ftp 20(数据端口) 21(控制端口)

    ssh 22

    telnet 23

    DNS 53

    http(web端) 80

    https 443

    tomcat 8080访问web的端口,8005 t omcat本身自己的端口,8009 与http等服务器建立连接的端口

    ntp 123

    nfs 2049

    smaba 137,138,139/tcp

    rsyslog 514 tcp/udp

    pop3 110/tcp

    pop3s 995/tcp

    postfix 25

    smtp 25/tcp

    smtps 465/tcp

    imap 143/tcp

    imaps 993/tcp

    dhcp 使用bootps协议 67/udp

    iscsi 3260

    redis 6379

    memcached 3360

    mysql 3306

    zabbix-server 10051

    zabbix-agent 10050

    snmp 使用udp 161

    php-fpm 9000

    rsync 873

    nginx 80

    +++++++++++++

    1.3.9 /etc/passwd /etc/shadow 文件中各字段的含义

    #cat /etc/passwd | head -1

    root❌0:0:root:/root:/bin/bash

    用户名:密码:用户标识号UID:组群标识号GID:用户名全称:主目录:登陆shell

    ]# cat /etc/shadow | head -1

    root: 6 6 6SQ/CJGMV$FJJHph/msPt0SyIgSPpjLcivChjzCTkBj8vRAp1eDRO2wHiD06gKJfb3cdse7ctSwnYbUwcT9G4luzzGKOsZ50:18045:0:99999:7:::

    用户名:加密密码:用户最后一次更改密码的日期(从1970年1月1号算起):密码允许更换前的天数:密码需要更改的天数:密码更换前警告的天数:账户被取消激活前的天数:用户账户过期日期:保留字段

    ++++++++++++++++

    1.3.10 /dev/shm 是Linux中的一个共享内存设备,使用的是tmpfs文件系统,是一个内存文件系统,存储再tmpfs文件系统的数据会放在内存中。

++++++++++++++++++++++++++++++++++++++++++++++++++

1.4 常用命令

w 列出所有登录过系统的用户

查看linux内核版本 #uname -r

列出cpu 信息 # lscpu

列出内存大小及空闲情况 # cat /pro/meminfo

++++

查看计算机系统启动后进入的默认模式: # systemctl get-default

(grahical.target 图形化界面;multi-user.target 字符界面)

修改系统启动进入的模式: # systemctl set-default 界面模式

++++

关闭/重启 系统:

—— shutdown [选项] 时间 警告信息

[选项]: -k 并不执行shutdown,只是发出警告信息

-r 重新启动

-h 关闭系统

-c 取消运行的shutdown

立即关闭系统: # shutdown -h now

—— halt [选项]

- w 不是真的关闭系统,知识写入/var/log/wtmp日志文件中

- d 关闭系统,不记录

- f 强制关闭系统

—— reboot 重启 (选项跟hatl 一样)

使用systemctl [选项] [系统命令] 也可以重启或者关闭系统

【系统命令】:halt 关闭和停止系统

poweroff 关闭并切断电源

reboot 重启

+++

显示当前用户:#whoami

查看哪些是bash 内置命令 #which echo

全局配置;/etc/bashrc

用户自定义配置: ~/.bashrc

+++

历史命令:# history 【选项】

-c 清除历史记录

-w 将当前的历史命令写入 .bash_history 文件中

-a 将目前新增的history历史记录写入.bash_history文件

n 显示最近n个命令

-r 读取历史文件内容

!命令xx :执行最近一次以xx开头的历史命令

++++++

命令别名:#alias 【别名】=【被定义的命令】

取消别名:#unalias 别名

要想别用永久有效,写进 /etc/bashrc 或 $HOME/.bashrc

+++++

stat 命令查看文件信息(文件inode、权限、时间属性、文件大小、所有者、链接数及文件类型)

-L 跟踪链接

-f 显示文件或者目录所在的文件系统的状态信息

-t 以简明格式显示文件或者目录信息

-c <有效的文件格式> 使用指定的格式代替默认值。

++++++++

ls 命令查看文档属性

-l :以长格式显示

-A :显示指定为目录下的所有子目录和文件,包含隐藏文件,但是不列出 “.” 和" …"

-d :显示目录本身的属性

-h :提供单位 常与 l 连用

-F : 显示文件类型

-a : 显示目录下的所有文件包括隐藏文件

+++++

pwd :显示工作目录路径

-L : 目录链接时,输出链接路径

-P : 输出物理路径

+++++++

cd : 更改工作目录路径

cd - : 返回进入此目录之气所在的目录

cd … :返回上一级目录

cd ~ :代表”目前用户身份“ 所在的主文件夹

++++++

touch :创建空文件、更改文件时间

-a :只更改访问时间atime

-m :更改文件的修改时间记录mtime

-c :假如目标文件不存在,不会建立新的文件

-r <文件> 使用指定文件的时间属性而非当前时间

++++++

mkdir : 创建目录

-m :对新创建的目录设置权限,默认是755

-v :每次创建新目录时都设置信息

-p :父目录子目录一起创建

rmkdir : 删除空目录

-p :若父目录为空时,递归删除

-v :输出处理的牡蛎详情

+++++

cp : 复制文件和目录

-a : 等于-dpr ,在复制目录时保留链接、文件属性、并递归地复制

-d :复制是保留链接

-f :在复制前不给确认提示信息

-i : 复制前给提示信息

-l : 只做链接文件

-r : 递归复制

++++++

mv :文件或目录改名、移动文件和目录路径

-i : 覆盖前询问

-f :覆盖前不询问

-n :不覆盖已存在的文件

-u :只有在源文件比目标文件新或者目标文件不存在时才移动

+++++++

rm :删除文件或目录

-f :强制删除

-r :递归删除目录及其内容

-i :删除前需要确认

+++++++

file :查询文件类型

(file可以识别目录、shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件以及DOS可执行文件)

++++++++++++

du :显示目录或文件的磁盘占用量

-a : 输出所有文件的磁盘用量,不仅仅是目录

-c :显示总计信息

-h :以KB\MB\GB 为单位显示

-L :找出任何符号链接指示的真正目的地

++++++++++

wc :统计文件行数、单词数、字节数和字符数

-l :统计行数

-w :统计单词数

-c :统计字节数

-m :统计字符数

-L :统计文件中最长行的长度

++++++++

ln :创建链接文件

软连接 : ln -s /路径/源文件 /路径/快捷方式的名字

硬链接: ln /路径/源文件 /路径/快捷方式的名字

-i :删除文件前进行确认

-s :创建符号链接文件即软链接

-d :允许超级用户创建指向目录的硬链接

-f :强行删除任何已存在的目标文件

-L : 将硬链接创建为符号链接引用

-t <目录> :在指定目录中创建链接

-v :链接前先列出每个文件的名称

+++++++

lsattr 查看文件或目录属性

-a 列出目录中所有文件,包括以”.“开头的文件

-d 以和文件相同的相同的方式列出目录,并显示其包含的内容

-R 递归地列出目录及内容属性

-v 列出文件的版本/生成号码

chattr :设置文件和目录的属性

-R 递归改变目录其内容的属性

-V 显示命令执行过程

-f 禁止大多数错误消息

  • <属性> 添加属性
  • <属性> 删除属性

    = <属性> 指定属性

    ++ +++++++++

    cat :显示文本文件

    -n : 对输出的所有行进行编号

    -b : 对非空输出行编号

    -s : 当遇到连续两行以上的空白行,就替换为一行的空白行

    -E :在每行结束处显示$

    ***: 使用cat 命令创建mm.txt 文件:

cat >mm.txt <<EOF

-> hello

-> EOF 输入EOF结束输入

+++++++++++

more 分页显示文本文件

less 回卷显示文本文件

head :显示指定文件的前若干行

head -n<数字> :显示每个文件的前数字行内容

-c <数字> :显示每个文件的前数字字节内容

-v 总是显示包含给定文件名的文件头

tail :查看文件末尾数据

-n<数字> :显示每个文件的最后数字行

-c <数字> :显示每个文件的最后数字字节内容

-f :即时输出文件变化后追加的数字

++++

sort :对文件中的数据进行排序

-m 如果给定的文件已经排好序,那么合并文件

-u 对排序后认为相同的行只留其中一行

-d 按字典顺序排序

-f 将小写字母与大写字母同等对待

-M 作为月份比较

-r 按照逆序输出排序结果

-c 检查给定文件是否已经排行序,若没有打印一个错误信息,返回值为1;

++++

uniq :将重复行熊输出文件中删除

-c 显示输出中在每行行首加上本行在文件出现的次数

-d 只输出重复行

-D 显示所有重复的行

-u 只显示文件不重复的行

-s 数字 :比较时跳过前数字个字符

-w 数字 : 对每行第数字个字符以后的内容不做对照

-f 数字 :比较时跳过前数字列

-i :比较的时候不区分大小写

+++++++++

cut :从文件每行中输出选定的字节、字符或字段

用法:cut [选项]… [文件]…

-b, --bytes=列表 只选中指定的这些字节

-c, --characters=列表 只选中指定的这些字符

-d, --delimiter=分界符 使用指定分界符代替制表符作为区域分界

-f 列表 :指定文件中设想被定界符(默认情况下为制表符)隔开的字段的列表

-n :取消分割多字节字符,仅和-b一起使用

-s :不打印没有包含分界符的行

参数格式:(仅使用-b 、-c 、-f选项时带参数)

N 从第1 个开始数的第N 个字节、字符或域

N- 从第N 个开始到所在行结束的所有字符、字节或域

N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域

-M 从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域

+++++++++++++++++++++++++

locate :在数据库中查找文件

-q :安静模式

-r :使用正则表达式

-i :匹配模式时忽略大小写

-c :显示找到的条目数

-w :匹配完整路径名

]# locate httpd.conf

+++++++++++++++++++++++++++++

whereis :查找指定文件、命令和手册页的位置

whereis 选项 名称

-b 只搜索二进制文件

-m 只搜索 man 手册

-u 搜索不常见记录

++++++++++++++++++++++++++++

创建用户账户 ]# useradd --help

用法:useradd [选项]

选项:

-b, --base-dir BASE_DIR 新账户的主目录的基目录

-c, --comment COMMENT 新账户的 GECOS 字段

-d, --home-dir HOME_DIR 新账户的主目录

-D, --defaults 显示或更改默认的 useradd 配置

-e, --expiredate EXPIRE_DATE 新账户的过期日期

-f, --inactive INACTIVE 新账户的密码不活动期

-g, --gid GROUP 新账户主组的名称或 ID

-G, --groups GROUPS 新账户的附加组列表

-R, --root CHROOT_DIR chroot 到的目录

-s, --shell SHELL 新账户的登录 shell

-u, --uid UID 新账户的用户 ID

-U, --user-group 创建与用户同名的组

++++++++++++++++++++

修改账户:]# usermod --help

选项:

-c, --comment 注释 GECOS 字段的新值

-d, --home HOME_DIR 用户的新主目录

-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE

-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态

-g, --gid GROUP 强制使用 GROUP 为新主组

-G, --groups GROUPS 新的附加组列表 GROUPS

-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中, 并不从其它组中删除此用户

-h, --help 显示此帮助信息并推出

-l, --login LOGIN 新的登录名称

-L, --lock 锁定用户帐号

-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)

-o, --non-unique 允许使用重复的(非唯一的) UID

-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码

-R, --root CHROOT_DIR chroot 到的目录

-s, --shell SHELL 该用户帐号的新登录 shell

-u, --uid UID 用户帐号的新 UID

-U, --unlock 解锁用户帐号

-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射

++++++++++++++++++

删除用户:用法:userdel [选项]

-r, --remove 删除用户同时,删除主目录和邮件池

-f, --force 强制删除

+++++++++++++++++

群组:一个用户只能属于一个主群组即登录后所属的组,其他的组是附加组,可以由多个附加组。

/etc/group 文件是组群的配置文件,内容:组群名:组群密码:GID:组群成员。GID=0 ,是root群组。

管理组群账户命令:

创建组群账户:用法:groupadd [选项]

选项:

-f, --force 如果组已经存在则成功退出

并且如果 GID 已经存在则取消 -g

-g, --gid GID 为新组使用 GID

-h, --help 显示此帮助信息并推出

-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值

-o, --non-unique 允许创建有重复 GID 的组

-p, --password PASSWORD 为新组使用此加密过的密码

-r, --system 创建一个系统账户

-R, --root CHROOT_DIR chroot 到的目录

修改组群账户:用法:groupmod [选项]

选项:

-g, --gid GID 将组 ID 改为 GID

-h, --help 显示此帮助信息并推出

-n, --new-name NEW_GROUP 改名为 NEW_GROUP

-o, --non-unique 允许使用重复的 GID

-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD

-R, --root CHROOT_DIR chroot 到的目录

+++++++++

id 可以显示用户UID及所属组的GID

su 可以切换到其他用户账户进行登录。

history 历史命令

#历史的操作记录在用户的目录下的.bash_history文件中,

]# cat ~/.bash_history

或 #history

]# echo $HISTSIZE //默认情况下记录1000条

1000

修改记录条数:sed -i ‘s/^HISTSIZE=1000/HISTSIZE=200/’ /etc/profile

]# source /etc/profile

]# echo $HISTSIZE

200

或者:编辑/etc/bashrc文件,添加以下四行:

HISTFILESIZE=2000

HISTSIZE=2000

HISTTIMEFORMAT=’%F %T ’ //定义了时间格式,操作记录会显示正确的时间

export HISTTIMEFORMAT

lsattr 查看文件属性

-a :列出目录的所有的文件

-d :显示指定目录的属性

-R :以递归的方式列出目录下所有文件及子目录以及属性值

-v: 显示文件或目录版本

chattr 锁定系统一些重要的文件或目录

  • :追加参数
  • : 移除参数

    = : 更新为指定参数

    -i :immutable ,设定文件不能删除、修改、重命名、设定链接等,页不能写入或新增内容

    -s :安全地删除文件或者目录,就文件被删除后全部收回硬盘空间

    -u :系统会保留器数据块以便以后能够恢复删除这个文件

    -c :设定文件是否经压缩后再存储。

    -a :只能向文件添加数据不能删除,常用于日志文件安全。

    chattr 不能保护/ 、/dev 、/tmp 、/var 等目录

pidof 查找正在运行的进程PID

]# pidof sshd

1894 959

host :用来查询DNS记录,后面接域名的话,命令返回该域名的IP

host[必要参数] [选择参数][名字][服务器]

功能 host命令:用于查询DNS的工具,它通过常转换指定主机名称的主机名称为IP地址。

必要参数:

-a 等同于“-v -t”

-C 在需要认证的域名服务器上查找SOA记录

-d 等同于“-v”

-l 列出一个域内所有的主机

-i 反向查找

-N 改变点数

-r 不使用递归处理

-R 指定UDP包数

-T 支持TCP/IP模式

-v 运行时显示详细的处理信息

-w 永远等待回复

-W 指定等待回复的时间

-4 用于IPv4的查询

-6 用于IPv6的查询

traceroute : 检测数据包是如何经由路由器的程序。

]# traceroute -n -m 5 -q 4 -w 3 www.baidu.com

-n 显示IP地址,不查主机名; -m 设置跳数 ; -q 4每个网关发送4个数据包 ;

-w 把对外发探测包的等待响应时间设置为3秒

mpstat 报告CPU状态的工具

每一秒统计一次CPU状态,一共统计3次

#mpstat 1 3

#LANG=c ##将时间从12小时制转换为24小时制

查看多核CPU的使用情况:

#mpstat -P ALL 1 1

·%user:用户态程序 ·%nice:优先级调整 ·%sys:内核态消耗 ·%iowait:磁盘等待 ·%irp:硬件中断 ·%soft:软件中断 ·%steal:处理hyperviosr的消耗 ·%guest:虚拟机消耗掉的CPU ·%idle:CPU空闲

]# cat /proc/meminfo 查看所有的内存的相关信息

vmstat 提供丰富的系统信息

procs : 中b 表示 不可中断睡眠的进程

system : in 每秒中断的次数;cs 每秒上下文切换数

CPU: st 指强制等待虚拟cpu的时间

iostat 主要用于监控系统设备的IO负载情况

iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

常见用法:

iostat -d -k 1 10 #查看TPS和吞吐量信息(磁盘读写速度单位为KB)

iostat -d -m 2 #查看TPS和吞吐量信息(磁盘读写速度单位为MB)

iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

输出信息的意义:

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输"意思是"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。

kB_read/s:每秒从设备(drive expressed)读取的数据量;

kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

istop 用来监控磁盘的I/O的情况

参数:

-o:只显示有I/O操作的进程和线程。

-P:只显示进程数。默认是显示进程和线程。

-k:以千字节显示

ulimit 显示(或设置)用户可以使用的资源的限制(limit)

ulimit -a 来显示当前的各种用户进程限制。

/etc/security/limits.conf 常用的配置文件

ulimit -u 10240 ##linux用户的最大进程数设为10000个

ulimit -n 4096 将每个进程可以打开的文件数目加大到4096

其他建议设置成无限制(unlimited)的一些重要设置是:

数据段长度:ulimit -d unlimited

最大内存大小:ulimit -m unlimited

堆栈大小:ulimit -s unlimited

CPU 时间:ulimit -t unlimited

虚拟内存:ulimit -v unlimited

继续阅读