Linux常用命令

vim 取消高亮显示,执行 :noh

1、开关机命令

shutdown –h now 立刻进行关机

shutdown –r now 现在重新启动计算机

reboot 现在重新启动计算机

su - 切换用户

passwd 修改用户密码

logout 用户注销

2、常用快捷命令〔ps:tab补全

ctrl + l - 清屏,类似clear命令

ctrl + r - 查找历史命令(history)

ctrl+c 终止

ctrl+k 删除此处至末尾所有内容

ctrl+u 删除此处至开始所有内容

3、展示目录列表命令lslist

ls 展示当前目录下的可见文件

ls -a 显示全部的文件,包括隐藏文件(开头为.的文件)也一起罗列出来

ls -A 显示全部的文件,连同隐藏文件,但不包括 ... 这两个目录

ls -l(ll) 展示当前目录下文件的数量(不包括隐藏文件)

ll -a 展示当前目录下所有文件的详细信息(文件数量、大小、读写权限)

pwd 显示目前的目录

4、切换目录命令cdchange directory

cd test 切换到test目录下

cd .. 切换到上一级目录

cd / 切换到系统根目录下

cd ~ 切换到当前用户的根目录下

cd - 切换到上一级所在的目录

5、目录管理

  • 创建(mkdir

mkdir test 在当前目录下创建一个test目录

mkdir -p test/a/btest目录下的a目录下创建一个b目录,如果上一级目录不存在,则连它的父目录一起创建

  • 删除(rmdir

rmdir 目录名 删除 目录(注意:该命令只能够删除空目录)

rm -d 目录名 删除 目录(使用 -d(–dir) 选项)

rm -r 目录名 删除 非空 目录(使用 -r(–recursive 或 -R) 选项)

6、文件管理

  • 创建(touch)命令

touch test.txt 在当前目录下创建一个test.txt的文件

  • 删除(rm)命令

rm test.txt 删除test.txt的文件(带询问的删除,需输入y才能删除)

rm -f test.txt 直接删除text.txt文件

rm -r test 递归删除,即删除test目录以及其目录下的子目录(带询问的删除)

rm -rf test 直接删除test目录以及其目录下的子目录

rm -f * 删除当前目录下的文件

7、文件打包或解压命令tar

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的;而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz

命令:tar -zcvf打包压缩后的文件名,要打包压缩的文件

其中:
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名

示例:

打包并压缩/test下的所有文件 压缩后的压缩包指定名称为xxx.tar.gz

tar -zcvf xxx.tar.gz aaa.txt bbb.txt ccc.txt

tar -zcvf xxx.tar.gz /test/*

7.1 解压压缩包(重点)

命令:tar [-xvf] 压缩文件

其中:x:代表解压

示例:将/test下的xxx.tar.gz解压到当前目录下

tar -xvf xxx.tar.gz

示例:将/test下的xxx.tar.gz解压到根目录/usr下

tar -xvf xxx.tar.gz -C /usr C代表指定解压的位置

8、端口查看命令

netstat -pan|grep 2809netstat -nl | grep 2809 查看 2809 端口使用情况

8.1 用于显示 tcpudp 的端口和进程等相关情况

netstat -tunlp

8.2 查看某个端口和服务的情况

  • 查询已开放的端口

netstat -anp

  • 查看当前所有 tcp 端口

netstat -ntlp

  • 查看端口使用情况

netstat -tunlp | grep 80 查看 80 端口使用情况
netstat -tunlp | grep 8080 查看 8080 端口使用情况
netstat -tunlp | grep 3306 查看 3306 端口使用情况

  • 查看服务运行情况

netstat -antp | grep dockerd 查看 dockerd 服务运行情况

8.3 防火墙操作

8.3.1 查看防火墙状态

systemctl status firewalld
systemctl status firewalld.service

[root@iZbp1hasnej7ztk2u90wnzZ /]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-09-01 11:31:31 CST; 24min ago
     Docs: man:firewalld(1)
 Main PID: 15567 (firewalld)
    Tasks: 2
   Memory: 26.3M
   CGroup: /system.slice/firewalld.service
           └─15567 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopidSep 01 11:31:31 iZbp1hasnej7ztk2u90wnzZ systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 01 11:31:31 iZbp1hasnej7ztk2u90wnzZ systemd[1]: Started firewalld - dynamic firewall daemon.
Sep 01 11:31:31 iZbp1hasnej7ztk2u90wnzZ firewalld[15567]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.
Sep 01 11:32:08 iZbp1hasnej7ztk2u90wnzZ firewalld[15567]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

firewall-cmd --state

[root@iZbp1hasnej7ztk2u90wnzZ /]# firewall-cmd --state
running
8.3.2 查看防火墙

firewall-cmd --list-all

[root@iZbp1hasnej7ztk2u90wnzZ /]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 2375/tcp 8082/tcp 8083/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
8.3.3 开启/关闭防火墙
  • 开启防火墙

systemctl start firewalld
systemctl start firewalld.service
service firewalld start
ps:若遇到无法开启,先执行:systemctl unmask firewalld.service 然后再执行:systemctl start firewalld.service

  • 关闭防火墙

systemctl stop firewalld
systemctl stop firewalld.service
service firewalld stop

8.3.4 添加指定需要开放的端口

firewall-cmd --add-port=8888/tcp --permanent 添加 8888 端口(开放端口)

firewall-cmd --zone=public --add-port=2375/tcp --permanent
ps:--zone为作用域,--add-port为开放端口,--permanent为永久开放,添加完重启一下虚拟机

8.3.5 移除指定端口

firewall-cmd --permanent --remove-port=8888/tcp 移除 8888 端口

8.3.6 更新防火墙规则(重载入添加的端口)

firewall-cmd --reload ps:添加、移除端口之后都需要重新载入;否则,将不会生效

8.3.7 查询指定端口是否已开 (ps:yes表示开启;no表示未开启)
  • 查询某个端口是否开启

firewall-cmd --query-port=8888/tcp 查询 8888 端口是否开启

  • 查看所有放行的端口

firewall-cmd --list-ports

[root@iZbp1hasnej7ztk2u90wnzZ /]# firewall-cmd --list-ports
2375/tcp 8082/tcp 8083/tcp
8.3.7 获取所有支持的服务

firewall-cmd --get-services

[root@iZbp1hasnej7ztk2u90wnzZ /]# firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

9、kill

在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令

  • 杀死进程

kill -9 PID

kill -quit PID

kill -term PID

kill -int PID

  • 强制停止

pkill -9 nginx

找出需要停止的服务,如:Nginx服务

执行 ps -ef|grep nginx,如:

执行 pkill -9 18207 即可停止

10、find:按照文件名查找

语法:find  [查找位置]  [查找条件]  [处理动作]

如:

(1)在根目录下查找文件 httpd.conf

find / -name httpd.conf / 表示在整个硬盘查找

(2)在 /etc 目录下文件 httpd.conf

find /etc -name httpd.conf

(3)使用通配符 * (0或者任意多个)

find /etc -name '*srm*' 表示在 /etc 目录下查找:文件名中含有字符串 srm 的文件

find . -name 'srm*' 表示当前目录下查找:文件名开头是字符串 srm 的文件

(4)查找文件夹名为 jenkins 的文件夹

find / -name jenkins -type d 表示当前目录下查找:文件夹名为jenkins的文件夹

(5)查找以 .txt 结尾的文件

find /var -name "*.txt" 表示在 /var 目录下查找:以 .txt 结尾的文件

(6)查找以所有字母开头的文件

find /var -name "[a-z]" 表示在 /var 目录下查找:以所有字母开头的文件

(7)查找以 abc 开头的文件

find /var -name "abc" 表示在 /var 目录下查找:以 abc 开头的文件

(8)查找更改时间在3天以内、超过3天的文件

find /var -mtime -3 表示在 /var 目录下查找:更改时间在3天以内的文件

find /var -mtime +3 表示在 /var 目录下查找:更改时间超过3天的文件

(9)查找文件类型为 d 的目录文件

find /etc -type -d 表示在 /etc 目录下查找:文件类型为 d 的目录文件

(10)查找文件类型为 l 的链接文件

find /etc -type -l 表示在 /etc 目录下查找:文件类型为 l 的链接文件

(11)查找在 /var 目录下文件大小大于1M的文件 (字节为单位)

find /var -size +1000000c 表示在 /var 目录下查找:文件大小大于1M的文件 (字节为单位)

(12)查找在 /var 目录下所有权限为700的文件,并把其权限设置为777

find /var -perm 700 |xargs chmod 777 表示在 /var 目录下查找:所有权限为700的文件,并把其权限设置为777

(13)在 /var 目录下查找出文件并查看文件的详细信息

find /var -type f |xargs ls -l 表示在 /var 目录下查找:文件并查看文件的详细信息

11、保存命令(vi

使用 vi 进入文本后,按 i 开始编辑文本;退出编辑模式,按 ESC 键,然后使用以下命令可以退出 vi

:q 表示不保存文件,退出vi编辑

:q! 表示不保存文件,强制退出vi编辑

:w 表示保存文件,不退出vi编辑

:w! 表示强制保存,不退出vi编辑

:wq 表示保存结束,退出vi编辑

:wq! 表示强制保存结束,退出vi编辑

:e! 表示放弃所有修改,从上次保存文件开始再编辑

12、which 命令

查看某个工具安装目录 which java 查看JDK安装路径
ps:which Java是无法定位到java的安装路径的,只能定位到执行路径;whereis Java也无法定位,只能展示一部分的java路径

13、tail 命令

tail 命令的作用是输出文件尾部,默认是打印文件最后10行到标准输出。

若指定多个文件,则会依次处理各给定文件,并以文件名作为头部信息。

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

命令格式:

tail [参数] [文件] 

常用参数:

-f 循环读取

-q 不显示处理信息

-v 显示详细的处理信息

-c<数目> 显示的字节数

-n<行数> 显示文件的尾部 n 行内容

--pid=PID 与-f合用 表示在进程ID,PID死掉之后结束

-q, --quiet, --silent 从不输出给出文件名的首部

-s, --sleep-interval=S 与-f合用 表示在每次反复的间隔休眠S秒

简单示例:

  • 要显示 notes.log 文件的最后 10 行,请输入以下命令:
tail notes.log
  • 要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:
tail -f notes.log

此命令显示 notes.log 文件的最后 10 行。
当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。
显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

  • 显示文件 notes.log 的内容,从第 20 行至文件末尾:
tail +20 notes.log
  • 显示文件 notes.log 的最后 10 个字符:
tail -c 10 notes.log

13.1 tail -f

tail -f 会根据文件描述符进行追踪,使用 -f, –follow–follow=descriptor 是等价的。

实际测试,当文件改名或被删除时,追踪会停止。

13.1 tail -F

tail -F 会根据文件名进行追踪并保持重试,当文件文件被移动或删除后,若再次创建同名文件,则会继续追踪该同名文件。

13.1 tailf

使用 tailf 时,如果文件不增长则不会访问磁盘文件,当然也就不会更新文件的访问时间。该特性对于在笔记本上监控日志文件很有用,当日志打印不那么频繁时,我们希望降低硬盘转速以省电。

14、Grep

grep命令支持三种正则表达式语法:BasicExtendedPerl-compatible

当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。

要搜索多个匹配模式,可以使用 OR( alternation ) 运算符。

我们可以用 OR 运算符 |( pipe ) 指定不同的匹配项,这些匹配项可以是文本字符串,也可以是表达式集。值得注意的是,在所有正则表达式运算符中,这个运算符的优先级是最低的。

使用 grep 命令基本正则表达式搜索多个匹配模式的语法如下:

grep 'pattern1\|pattern2' filename

这里需要注意的是,始终要用单引号将正则表达式括起来,因为单引号内的内容原样输出,被单引号括起的内容不管是常量还是变量不会发生替换。

使用基本正则表达式时,元字符被解释为字面字符。要保留元字符的特殊含义,必须用反斜杠(\ )对它们进行转义。这就是为什么我们要转义 OR 运算符(|)。

要将模式解释为扩展正则表达式,请调用 grep -E(或 --extended-regexp)选项。

使用扩展正则表达式时,不需要对 OR 运算符 (|) 进行转义:

grep -E 'pattern1|pattern2' file

14.1 Grep 命令搜索多个字符串

通常我们认为,文字字符串是最基本的模式。

接下来我们将示例,搜索某用户日志错误文件中出现的所有 fatalerrorcritical 字符串。

语法如下:

grep 'fatal\|error\|critical' /var/log/nginx/error.log

还需要注意的是,如果要搜索的字符串包含空格,需要用双引号将其括起来。

下面是使用扩展正则表达式的同一个示例,它不需要转义字符:

grep -E 'fatal|error|critical' /var/log/nginx/error.log

默认情况下,grep 命令是区分大小写的。

要在搜索时忽略大小写,请调用 grep-i (或 --ignore-case )选项,示例如下:

grep -i 'fatal|error|critical' /var/log/nginx/error.log

当你只想搜索某个单词时,比如你想搜索的是单词 errorgrep 命令会输出所有包含 error 字符串的行,即它除了会输出包含 error 单词的行,还会输出包含 errorlessantiterrorists 等非 error 单词的行,这样是极不方便的。

因此要仅返回指定字符串是整词的行,或者是由非单词字符括起来的行,可以使用 grep-w (或 --word-regexp )选项:

grep -w 'fatal|error|critical' /var/log/nginx/error.log

值得注意的是,单词字符包括有字母、数字字符(比如 a-za-Z0-9 )以及下划线( _ ),所有其他字符都被视为非单词字符。

15、查看服务是否已经启动

如:查看 docker 是否启动成功

1、利用 systemctl list-units 命令;该命令可以查看当前已经启动的服务;

2、利用 systemctl 命令,该命令用于进行服务管理,当参数设置为 status 时就可以查看当前服务的状态,语法为 systemctl status docker

现在最新的Linux系统都统一使用 systemctl 进行服务的管理

15.1 管理服务 systemctl (root权限)

systemctl 管理指令

基本语法:

systemctl [start | stop | restart | status] 服务名

systemctl 指令管理的服务在 /usr/lib/systemd/system 查看

systemctl [opt] xxx.service
  • status 查看当前服务状态
  • start 启动服务
  • stop 关闭服务
  • restart 重启服务
  • enable 设置开机启动
  • disable 设置开机不启动
  • reload 后面不接具体服务名,重新加载配置文件
  • mask 注销服务
  • unmask 取消注销

示例如下:

运行级别的分类 runlevel

  • 运行级别0:系统停机状态
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS)
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台
  • 运行级别6:系统正常关闭并重启

15.2 一些常用命令 systemctl

  • 查看当前已经启动的服务
systemctl list-units
  • 查看所有服务
systemctl list-unit-files
  • 查看服务有哪些依赖
systemctl list-dependencies xx.service
  • 查看服务有哪些依赖(反向)
systemctl list-dependencies --reverse xx.service
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐