Linux 常用命令

linux命令查询手册
win10安装内置Ubuntu

用户相关

whoami命令 - 打印当前登录用户

当你不知道当前登录系统的是谁,可以看控制台的,也可以使用whoami命令:
在这里插入图片描述

whoami

sudo命令 - 以管理员身份执行命令

当我们登录的用户不是root权限,并且想要使用root权限执行命令,可以使用sudo命令

sudo vim file.txt	# 以管理员身份编辑file.txt文件

su命令 - 切换用户

su [参数] 用户名
su root	# 切换到root用户
参数说明
-l--login改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname,此外,也会变更PATH变量
-m,-p--preserve-environment变更身份时,不要变更环境变量
-s--shell指定要执行的shell

passwd命令 – 修改用户账户密码

passwd	# 修改当前用户密码
sudo passwd root	# 修改root密码
passwd -l crazyjialin	# 锁定用户crazyjialin,不允许修改密码
passwd -u crazyjialin	# 解锁锁定的用户,允许修改密码
参数说明
-l锁定用户密码,无法被用户自行修改
-u解开已锁定用户密码,允许用户自行修改
-d删除密码,会 造成很大的安全问题,不推荐使用

ssh 远程连接其他服务器

ssh -p 22 root@192.168.0.1 # 使用root用户,22端口连接到192.168.0.1
参数说明
-l<登录名>指定连接远程服务器的登录用户名,也可以使用 user@ip 方式制定登录用户
-p<端口>指定远程服务器上的端口
-q静默模式,所有的警告和诊断信息被禁止输出
-1强制使用ssh协议版本1
-2强制使用ssh协议版本2
-4强制使用IPv4地址
-6强制使用IPv6地址

配置免密快捷登录(键入ssh <快捷登录名>即可连接)

  1. 客户端生成密钥
    ssh-keygen -t rsa
    
    生成密钥过程中,建议采用默认值,只需要按三次回车之后,就会在~/.ssh目录下生成密钥文件,其中,id_rsa为私钥,id_rsa.pub为公钥。
  2. 将客户端生成密钥上传到服务端
    服务器的~/.ssh/authorized_keys文件保存可快速连接的客户端的公钥。只需把客户端生成的id_rsa.pub文件的内容拷贝到authorized_keys文件的末尾。
    配置完成后,就可以实现免密登录了,直接ssh到指定的服务器,不用输入密码即可登录
  3. 客户端配置快捷登录
    为了减少每次连接是需要输入ip和用户名的操作,我们可以配置快捷登录。在客户端的~/.ssh/config(如果没有就创建一个config文件)配置服务器的相关参数简化登录命令,具体配置方式如下:
    Host uat
    Hostname 192.168.1.1
    Port 22
    User root
    
    配置完成后,我们就可以使用以下快捷命令连接uat的服务器:
    ssh uat
    

系统相关

查看系统版本号

cat /etc/redhat-release
# CentOS Linux release 7.8.2003 (Core)
cat /etc/issue
# Ubuntu 20.04 LTS \n \l
lsb_release -a
# No LSB modules are available.
# Distributor ID: Ubuntu
# Description:    Ubuntu 20.04 LTS
# Release:        20.04
# Codename:       focal

查看linux内核版本号

cat /proc/version
# Linux version 4.4.0-19041-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #1237-Microsoft Sat Sep 11 14:32:00 PST 2021
uname -a
# Linux CJL-PC 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux

getconf命令 - 查看系统配置

getconf LONG_BIT # 查看系统位数

文件相关

cd命令 - 切换目录

cd是‘change directory’缩写,译为切换目录;cd后直接跟目的路径即可,可以是相对路径,也可以是绝对路径;

/ :系统根路径;
~:当前用户工作目录;
/mnt: mount - 挂载,代表一些挂接存储设备路径。如果是按照文章顶端方式,在win10系统安装的Ubuntu,/mnt代表的就是我们windows磁盘的根路径
写路径时可以写出前一部分路径名,按一下tab键自动补全,如果不是唯一,按两下tab键打印出所有匹配项;

cd ../	# 切换到上一级
cd /	# 切换到根路径
cd ~	# 切换到当前用户工作目录

ls命令 - 显示目录内容

ls是’list’的缩写,用于显示指定目录下的内容及属性

ls [参数] [目录]
ls -a # 查看当前目录下所有内容,包括隐藏的文件和目录
ls -l # 查看当前目录下内容及属性,同ll命令
参数说明
-a显示所有文件及目录 (包括以“.”开头的隐藏文件)
-l使用长格式列出文件及目录信息
-r将文件以相反次序显示(默认依英文字母次序)
-t根据最后的修改时间排序
-A同 -a ,但不列出 “.” (当前目录) 及 “…” (父目录)
-S根据文件大小排序
-R递归列出所有子目录

ll命令 - 列出目录内容的详细信息

ll是ls -l的别名,用于查看目录中内容的详细信息

ll [参数] [目录]
参数说明
-a列出目录下的所有文件,包括以 . 开头的隐含文件
-A显示除 “.”和“…”外的所有文件
-k以 k 字节的形式表示文件的大小
-s在每个文件名后输出该文件的大小
-N不限制文件长度
-t以时间排序
-u以文件上次被访问的时间排序

输出结果:
在这里插入图片描述

第一列:

  • 第一个字符表示文件的类型:-表示普通文件,d表示目录,l表示链接文件;
  • 剩下的9个字符,三个为一组分为三组,分别代表文件所有者对该文件的权限、文件所有者所在组的其他用户对该文件的权限、其他用户对该文件的权限;
  • r(Read,读取权限),w(Write,写入权限),x(eXecute,执行权限);

第二列:表示目录内一级子目录的个数(注意此处看到的值要减2才等于该目录下的子目录的实际个数,因为每个目录下都有一个./和一个../),如果是文件或者链接则为1;
第三列:文件所有者,Linux/Unix 属于多用户多任务操作系统,所有的文件皆有拥有者;
第四列:文件所有者所在的组;
第五列: 文件大小,如果是目录,则表示该目录符所占的大小,并不表示该目录下所有文件的大小(一般目录为4096);
第六七八列:修改日期;
第九列:文件名称;

chmod命令 - 更改文件或目录权限 (重要)

chmod命令的英文原意是“change the permissions mode of a file”,我们简称为“change mode”。
前边讲了ll命令可以查看文件的权限,9位字符分别代表文件所有者,所有者所在组内成员,其他人员的 r读 w写 x可执行权限,chmod命令就是用来修改这些权限的。
分别有以下两种模式:

  • 模式一:采用权限字母和操作符方式
    • u表示user(owner) - 文件所有者、g表示group - 文件所有者所在组、o表示other - 其他用户、a表示all -三者全部。可以搭配使用,如ug表示文件所有者及其所在组;
    • +表示添加权限,-表示删除权限
chmod u+r file.txt	# 给file.txt文件的所有者添加 r读权限
chmod g-w file.txt	# 给file.txt文件所有者所在群组内其他成员去掉 w写权限
chmod o+x shell1	# 给shell1文件除所有者所在组外其他成员添加 x可执行操作权限
  • 模式二:采用数字方式修改权限
    rwx三个值分别代表读写执行的权限,我们将用三位二级制数来表示对应权限,1代表有,0代表无,如下图:
    在这里插入图片描述
chmod 777 file.txt	# 将file.txt文件的权限修改为rwxrwxrwx,即所有用户都有读写执行的权限
chmod -R 764 dir	# 将dir目录及目录内所有内容的权限修改为rwxrw-r--
参数说明
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
-v显示权限变更的详细资料

chown命令 - 改变文件或目录所属用户和用户组

chown 命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。一般来说,这个指令仅限系统管理者(root)所使用,普通用户没有权限改变文件所属者及所属组。

chown crazyjialin test.txt	# 修改test.txt文件的所有者为crazyjialin
chown -R crazy:crazy dir 	# 修改dir目录及其内容的所有者及用户组为crazy
参数说明
-R对目前目录下的所有文件与子目录进行相同的拥有者变更
-c若该文件拥有者确实已经更改,才显示其更改动作
-f若该文件拥有者无法被更改也不要显示错误讯息
-h只对于连结(link)进行变更,而非该 link 真正指向的文件
-v显示拥有者变更的详细资料

touch命令 - 创建文件

touch file.txt	#创建file.txt文件
touch file{1..5}.txt  # 批量创建文件(file1.txt file2.txt file3.txt file4.txt file5.txt)

mkdir命令 - 创建目录

mkdir dir # 创建子目录dir
mkdir dir1 dir2 dir3	# 创建多个子目录
mkdir -m 700 dir # 创建dir目录,并且设置文件属主有读、写和执行权限,其他人无权访问
参数说明
-p递归创建多级目录
-m建立目录的同时设置目录的权限

rm命令 - 移出文件或目录

linux是没有回收站的,所以删除文件或者目录时一定要保持清醒的头脑!

rm -rf *	# 递归删除当前目录下所有文件
参数说明
-f忽略不存在的文件,不会出现警告信息
-i删除前会询问用户是否操作
-r/R递归删除
-v显示指令的详细执行过程

cat命令 - 查看文件内容 (重要)

Linux系统中有很多个用于查看文件内容的命令,每个命令又都有自己的特点,比如这个cat命令就是用于查看内容较少的纯文本文件的。

当文件内容较大时,文本内容会在屏幕上快速闪动(滚屏),用户往往看不清所显示的具体内容。因此对于较长文件内容可以按Ctrl+S键,停止滚屏;以及Ctrl+Q键可以恢复滚屏;而按Ctrl+C(中断)键则可以终止该命令的执行。

cat filename.txt # 查看文件内容
cat -n filename.txt # 查看文件内容,并且显示行数编号
# 查看文件的内容,并添加行数编号后输出到另外一个文件中
cat -n linuxcool.log > linuxprobe.log
参数说明
-n显示行数(空行也编号)
-s显示行数(多个空行算一个编号)
-b显示行数(空行不编号)
-E每行结束处显示$符号

tail命令 – 查看文件尾部内容 (重要)

tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行,适用于查看log之类的文件

tail file #查看file文件的最后10行
tail -n 20 file # 查看file文件的最后20行
tail +20 file # 显示文件file的内容,从第20行至文件末尾
tail -f 10 file # 一直变化的文件总是显示后10行
参数说明
-n <N>或--line=<N>输出文件的尾部N(N位数字)行内容
-f<name/descriptor>--follow<nameldescript>:显示文件最新追加的内容
--retry即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用

vi/vim命令 - 文本编辑器 (重要)

vi命令是linux系统字符界面下的最常用的文本编辑器,vim是vi的升级版。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)

  • 命令模式
    用户刚刚启动 vi/vim,便进入了命令模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,而是被当作了一个命令。
    以下是常用的几个命令:
    功能
    i / insert切换到输入模式
    :切换到底线命令模式
    u撤销(Undo)
    ctrl + r重做(Redo),即撤销的撤销
    dd删除当前行
    yy拷贝当前行
    p在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴
  • 底线命令模式
    在命令模式下按下:即可进入底线命令模式。
    以下是常用的几个命令:
    命令功能
    :q /退出vim程序
    :q!放弃所有更改,强制退出vim
    :w保存文件
    :wq保存所有修改并退出
    :e重新加载当前文档
    :e!放弃所有更改,并重新加载文档
    :saveas [文件名]另存为
    :split [文件名]以上下并排方式打开另外一个文件,期间键入ctrl + w切换窗口
    :vsplit [文件名]以左右并排方式打开另外一个文件,期间键入ctrl + w切换窗口
  • 输入模式
    在命令模式下按下i或者insert即可进入输入模式,输入模式可以对文件内容进行修改;按下esc退出输入模式,进入命令模式。

cp命令

cp是copy的缩写,可以复制文件或目录。

cp [参数] [源文件] [目标]
参数说明
-f若目标文件已存在,则会直接覆盖原文件
-i若目标文件已存在,则会询问是否覆盖
-p保留源文件或目录的所有属性
-r递归复制文件和目录
-d当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l对源文件建立硬连接,而非复制文件
-s对源文件建立符号连接,而非复制文件
-b覆盖已存在的文件目标前将目标文件备份
-v详细显示cp命令执行的操作过程
-a等价于“dpr”选项

scp命令 - 远程拷贝文件

scp是 secure copy的缩写,可以在不同linux服务器之间进行安全的文件拷贝。

# 从远程赋值文件到本地目录
scp root@192.168.10.10:/opt/soft/rhel-server-7.3-x86_64.tar.gz /opt/soft/
# 从远程复制目录到本地
scp -r root@10.10.10.10:/opt/soft/mysql /opt/soft/
# 上传本地文件到远程机器指定目录
scp /opt/soft/rhel-server-7.3-x86_64.tar.gz root@192.168.10.10:/opt/soft/scptest
# 上传本地目录到远程机器指定目录
scp -r /opt/soft/mysql root@192.168.10.10:/opt/soft/scptest
# 保留文件的最后修改时间,最后访问时间和权限模式
scp -p /root/install.log root@192.168.10.10:/tmp 
参数说明
-C使用压缩
-r以递归方式复制
-o指定使用的ssh选项
-P指定远程主机的端口号
-p保留文件的最后修改时间,最后访问时间和权限模式
-l指定宽带限制
-1强制使用ssh协议版本1
-2强制使用ssh协议版本2
-4强制使用IPv4地址
-6强制使用IPv6地址

find命令 - 查找和搜索文件 (重要)

find命令可以根据给定的路径和表达式查找的文件或目录。
find如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find命令,find命令模糊搜索还是比较消耗系统资源的。

find [路径] [参数] [参数值]
find /etc -name "*.conf"	# 使用-name参数查看/etc目录下面所有的.conf结尾的配置文件
find /home ! -name "*.txt"	# 找出/home下不是以.txt结尾的文件
find /etc -size +1M			# 使用-size参数查看/etc目录下面大于1M的文件
find /var/log -iname "*.log"	# 在/var/log目录下忽略大小写查找以.log结尾的文件名
find . -type f -atime +7	# 搜索超过七天内被访问过的所有文件
find . -type f -amin +10	# 搜索访问时间超过10分钟的所有文件
find ~ -type d ! -empty		# 检索用户主目录下所有的非空目录
find ~ -type d -empty -delete # 删除用户主目录下所有空目录
find / -maxdepth 3			# 搜索时向下递归的层数最大为 3
参数说明
-name按名称查找,名称中可以使用?表示任意单个字符,*表示任意数量的任意字符
-size按大小查找,c: 字节、k:KB、M:MB、G:GB,可以用+-表示大于和小于
-type按类型查找, f:文件,d:目录,l:符号链接
-iname忽略大小写
-empty查找空的文件或者目录
-user / -group根据文件所有者或所有者所在组进行查询
-maxdepth限制递归层数
-delete删除搜索到的文件和目录
-mtimemodification time,文件内容最后一次有过更改的时间点,可以用+-表示大于和小于
-atimeaccess time,最后一次文件有被读取过的时间点
-ctimechange time,最后一次文件有被变更过的时间点(如内容被修改,或权限等 metadata 被修改)

在所有参数+值前可以加逻辑判断符,即!表示反义匹配,使用方式见示例
-mtime 2:该文件 2 天前被修改过
-mtime -2:该文件 2 天以内被修改过
-mtime +2:该文件距离上次修改已经超过 2 天时间

which命令 - 查找Path中可执行文件 (重要)

which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,我们使用which命令来检查某个系统命令是否存在,或者找出所执行命令所对应的具体位置。

which node # 找到node命令的执行文件所在位置

whereis命令 - 显示命令及相关文件的路径

  • whereis命令用来定位命令的二进制程序、源代码文件和man手册页等相关文件的路径。
  • 与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广。
  • whereis命令查找速度非常快,因为它不是在磁盘中乱找,而是在一个数据库中查询; 数据库是linux系统自动创建的,包含有本地所有文件的信息,并且每天通过自动执行updatedb命令更新一次。正因为这样,whereis命令的搜索结果有时候会不准确,比如刚添加的文件可能搜不到, 原因就是该数据库文件没有被更新。
whereis [参数] [命令名]
whereis node # 查找node命令及说明文件所在位置
whereis -b node # 只查找node命令所在位置
参数说明
-b查找二进制程序或命令
-B从指定目录下 查找二进制程序或命令
-m查找man手册文件
-M从指定目录下 查找man手册文件
-s只查找源代码文件
-S从指定目录下 查找源代码文件

网络和进程相关

ifconfig命令 - 显示或设置网络设备

ifconfig命令的英文全称是“network interfaces configuring”,即用于配置和显示Linux内核中网络接口的网络参数。

ifconfig	# 查看本机网络设备信息
ifconfig eth0 down # 关闭eht0网卡
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255 # 配置IP地址
参数说明
add<地址>设置网络设备IPv6的IP地址
del<地址>删除网络设备IPv6的IP地址
down关闭指定的网络设备
up启动指定的网络设备
IP地址指定网络设备的IP地址

ping命令 - 测试主机间网络连通性

ping命令主要用来测试主机之间网络的连通性

ping [参数] [主机地址/域名]
ping -c 4 -i 3 www.jd.com	# 连续 ping www.jd.com 4次,时间间隔为3秒
参数说明
-c指定发送报文的次数
-i指定收发信息的间隔时间

telnet命令 - 远程登录主机或测试端口连通性

telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但是我们可以使用telnet命令来测试目的主机的某个端口是否开放。

telnet 172.16.48.184 1980	# 测试172.16.48.184主机的1980端口是否开放

netstat命令 - 显示网络命令

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

netstat -tnlp # 查看监听状态的tcp相关的进程情况 (常用)

在这里插入图片描述

输出结果表头含义:

  • Proto: 协议
  • Recv-Q: 接收队列
  • Send-Q: 发送队列
  • Local Address: 内网地址
  • Foreign Address: 外网地址
  • State: 状态
  • PID/Program name: 进程id和程序名称
参数说明
-t(tcp)仅显示tcp相关选项
-u(udp)仅显示udp相关选项
-n拒绝显示别名,能显示数字的全部转化为数字
-l仅列出在Listen(监听)的服务状态
-p显示建立相关链接的程序名
-i显示网络界面信息表单
-s显示网络工作信息统计表
-a显示所有连线中的Socket

ps命令 - 显示进程状态

ps命令是“process status”的缩写,ps命令用于显示当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。

ps -aux	# 查看系统中所有进程
ps -el	# 查看进程详细信息,包括父进程id和进程优先级

在这里插入图片描述

输出结果表头含义:

  • USER :该进程是由哪个用户产生的。
  • PID:进程的 ID。
  • %CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
  • %MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
  • VSZ:该进程占用虚拟内存的大小,单位为 KB。
  • RSS:该进程占用实际物理内存的大小,单位为 KB。
  • TTY:该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
  • STAT:进程状态。常见的状态有以下几种:
    -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
    -R:该进程正在运行。
    -S:该进程处于睡眠状态,可被唤醒。
    -T:停止状态,可能是在后台暂停或进程处于除错状态。
    -W:内存交互状态(从 2.6 内核开始无效)。
    -X:死掉的进程(应该不会出现)。
    -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
    -<:高优先级(以下状态在 BSD 格式中出现)。
    -N:低优先级。
    -L:被锁入内存。
    -s:包含子进程。
    -l:多线程(小写 L)。
    -+:位于后台。
  • START:该进程的启动时间。
  • TIME:该进程占用 CPU 的运算时间,注意不是系统时间。
  • COMMAND:产生此进程的命令名。

在这里插入图片描述

输出结果表头含义:

  • F 进程标志,说明进程的权限,常见的标志有两个:
    1:进程可以被复制,但是不能被执行;
    4:进程使用超级用户权限;
  • S 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
  • UID 运行此进程的用户的 ID;
  • PID 进程的 ID;
  • PPID 父进程的 ID;
  • C 该进程的 CPU 使用率,单位是百分比;
  • PRI 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
  • NI 进程的优先级,数值越小,该进程越早被执行;
  • ADDR 该进程在内存的哪个位置;
  • SZ 该进程占用多大内存;
  • WCHAN 该进程是否运行。"-"代表正在运行;
  • TTY 该进程由哪个终端产生;
  • TIME 该进程占用 CPU 的运算时间,注意不是系统时间;
  • CMD 产生此进程的命令名;
参数说明
a显示一个终端的所有进程,除会话引线外
u显示进程的归属用户及内存的使用情况
x显示没有控制终端的进程
-l长格式显示更加详细的信息
-e显示所有进程

kill命令 - 杀死进程

kill命令用来删除执行中的程序或工作。

kill [参数] [进程号]
kill 104 # 正常结束id为104的进程(默认值是-15)
kill -9 104	# 强制结束id为104的进程
参数说明
-l <信息编号>若不加<信息编号>选项,列出系统支持的信号
-s <信息名称或编号>指定向进程发送的信号
-a处理当前进程时不限制命令名和进程号的对应关系
-p指定kill命令只打印相关进程的进程号,而不发送任何信号
-u指定用户

常用信号:

  • HUP 1 终端断线
  • INT 2 中断(同 Ctrl + C)
  • QUIT 3 退出(同 Ctrl + \)
  • TERM 15 终止
  • KILL 9 强制终止
  • CONT 18 继续(与STOP相反, fg/bg命令)
  • STOP 19 暂停(同 Ctrl + Z)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值