Linux系统作web类项目服务器的首先系统,在从事web项目相关的开发、测试、运维等工作时,常用的Linux命令属于基本技能。
本文将常见的Linux命令进行分类、汇总、说明,各命令较少涉及参数的使用,如需详细了解某个命令可以通过:
1.官网:https://www.linux.org/
2.参考:Linux常用命令大全
3.终端输入:man 命令 或: 命令 --help # 可查看帮助信息
Linux常用命令分类:
系统状态显示:系统、内存、CPU、时间、联网等,服务器常规的信息查看命令
系统工作命令:关机、重启、进程、下载、用户管理等,服务器工作相关的命令
目录文件操作:切换目录、新建文件夹/文件、复制粘贴、剪切、删除、查找、备份、更改权限、制作软连接等
文件内容操作:内容查看、编辑文件内容,简要介绍强大的vim编辑器
磁盘相关操作:磁盘的查看、挂载、卸载等
压缩解压操作:文件压缩、解压处理
软件安装卸载:使用常用的包管理工具进行软件的安装、更新/升级、卸载等
其他与web项目相关的命令:数据库、反向代理等
一、系统状态显示命令
1、当前系统信息显示:
[ec2-user@ip-172-31-34-34 /]$ echo Hello,world! # 先来惯例,echo:打印命令
Hello,world!
[ec2-user@ip-172-31-34-34 ~]$ arch # 显示内核架构 x86_64 [ec2-user@ip-172-31-34-34 ~]$ uname # 显示内核信息 Linux [ec2-user@ip-172-31-34-34 ~]$ uname -m # 显示内核架构 x86_64 [ec2-user@ip-172-31-34-34 ~]$ uname -r # 显示内核版本 4.14.77-70.59.amzn1.x86_64 [ec2-user@ip-172-31-34-34 ~]$ uname -a # 内核具体信息 Linux ip-172-31-34-34 4.14.77-70.59.amzn1.x86_64 #1 SMP Mon Nov 12 22:02:45 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [ec2-user@ip-172-31-34-34 ~]$ cat /proc/version # 系统版本 Linux version 4.14.77-70.59.amzn1.x86_64 (mockbuild@gobi-build-64001) (gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC)) #1 SMP Mon Nov 12 22:02:45 UTC 2018 [ec2-user@ip-172-31-34-34 ~]$ cat /etc/issue # 系统发行版信息 Amazon Linux AMI release 2018.03 Kernel \r on an \m
2、查看内存:
[ec2-user@ip-172-31-34-34 ~]$ free -m # 参数m是指按照MB统计 可换成 b k m g
total used free shared buffers cached
Mem: 985 883 102 2 20 91
-/+ buffers/cache: 770 214
Swap: 0 0 0
3、查看CPU情况:
[ec2-user@ip-172-31-34-34 ~]$ 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: 63
Model name: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
Stepping: 2
CPU MHz: 2400.110
BogoMIPS: 4800.11
Hypervisor vendor: Xen
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0
[ec2-user@ip-172-31-34-34 ~]$ getconf LONG_BIT # 位数
64
[ec2-user@ip-172-31-34-34 ~]$ uptime # 查看负载信息
11:19:29 up 23 days, 8:17, 1 user, load average: 0.00, 0.00, 0.00
4、当前系统日期和时间
[ec2-user@ip-172-31-34-34 ~]$ date # 当前是UTC时区,修改时区可通过tzselect命令,或者直接修改/etc/sysconfig/clock配置文件,重启后生效
Thu Mar 21 10:03:55 UTC 2019 # 修改时间通过运行 date date 041217002007.00 然后执行clock -w 修改的时间格式是:月日时分年.秒
[ec2-user@ip-172-31-34-34 ~]$ cal 2019 # 显示2019年日历
2019
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
5、联网情况
[ec2-user@ip-172-31-34-34 ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 06:3D:35:50:67:14
inet addr:172.31.**.** Bcast:172.31.88.*** Mask:255.255.240.0 # 显示本地ip地址
inet6 addr: fe80::ggg:35ff:fe50:6714/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
RX packets:1016816 errors:0 dropped:0 overruns:0 frame:0
TX packets:996573 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:94653851 (90.2 MiB) TX bytes:917494558 (874.9 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:220729 errors:0 dropped:0 overruns:0 frame:0
TX packets:220729 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:131542337 (125.4 MiB) TX bytes:131542337 (125.4 MiB)
二、系统工作命令
1、关机、重启、注销登录:
[ec2-user@ip-172-31-34-34 ~]$ init . # 或者 init 0 关机
[ec2-user@ip-172-31-34-34 ~]$ shutdow # 关机
[ec2-user@ip-172-31-34-34 ~]$ poweroff # 关机
[ec2-user@ip-172-31-34-34 ~]$ shutdow -h hours:minutes & # 定时关机
[ec2-user@ip-172-31-34-34 ~]$ shutdow -c # 取消定时关机
[ec2-user@ip-172-31-34-34 ~]$ shutdow -r now # 重启
[ec2-user@ip-172-31-34-34 ~]$ reboot # 重启
[ec2-user@ip-172-31-34-34 ~]$ logout # 注销登录
2、用户管理:
[ec2-user@ip-172-31-34-34 ~]$ who # 显示当前用户信息
ec2-user pts/0 Mar 21 09:01 (223.71.81.68)
[ec2-user@ip-172-31-34-34 ~]$ groups # 查看当前用户的组内成员,关于用户组的操作不做介绍
ec2-user wheel
[ec2-user@ip-172-31-34-34 ~]$ hostname # 主机名
ip-172-31-34-34
[ec2-user@ip-172-31-34-34 ~]$ w # 显示当前活动的用户的具体信息
10:28:12 up 23 days, 7:26, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ec2-user pts/0 223.71.81.68 09:01 1.00s 0.06s 0.00s w
[ec2-user@ip-172-31-34-34 ~]$ passwd 密码 # 修改当前用户的登录密码
[ec2-user@ip-172-31-34-34 ~]$ passwd user1 密码 # 修改user1的登录密码 只允许root用户修改
[ec2-user@ip-172-31-34-34 ~]$ last # 显示登录记录
ec2-user pts/0 223.71.81.68 Thu Mar 21 09:01 still logged in
ec2-user pts/0 223.71.81.68 Mon Mar 18 11:09 - 11:09 (00:00)
3、进程管理:
[ec2-user@ip-172-31-34-34 ~]$ ps aux # ps 是常用的进程显示命令,通常和管道符(|)一起查询某个进程信息,ps参数很多,请自行参考:man ps
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 19692 2372 ? Ss Feb26 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S Feb26 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I Feb26 0:00 [kworker/0:0]
[ec2-user@ip-172-31-34-34 ~]$ ps aux|grep nginx # 查看Nginx进程
root 9548 0.0 0.2 59952 2528 ? Ss Feb28 0:00 nginx: master process /usr/sbin/nginx
[ec2-user@ip-172-31-34-34 ~]$ top # top 命令可以动态监视本都进程和系统负载信息 属于强化版的‘win系统任务管理器’
top - 10:38:48 up 23 days, 7:37, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 97 total, 1 running, 72 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1009432k total, 906100k used, 103332k free, 21796k buffers
Swap: 0k total, 0k used, 0k free, 94576k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19692 2372 2048 S 0.0 0.2 0:02.81 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0
[ec2-user@ip-172-31-34-34 ~]$ pidof sshd # 查看指定进程的 进程号(PID)
9916 9914 9722 9720 2577
[ec2-user@ip-172-31-34-34 ~]$ kill # 结束进程命令 命令格式: kill 进程号(PID)
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] # kill 参数
[ec2-user@ip-172-31-34-34 ~]$ kill -9 9916 # 常用 -9 这个参数,来强制结束某一进程
[ec2-user@ip-172-31-34-34 ~]$ kill -l # 这个命令列出所有数字含义,其中9是指忽略程序的等待情况(比如有的进程需要释放内存,释放的时间太长,导致kill阻塞),直接停止
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[ec2-user@ip-172-31-34-34 ~]$ killall httpd # 结束整个进程树 命令格式: killall 进程名
4、文件下载:
[ec2-user@ip-172-31-34-34 ~]$ wget 下载链接 # 下载文件,常用于源码包的下载
三、目录文件操作
1、路径、目录操作:
[ec2-user@ip-172-31-34-34 ~]$ pwd # 显示当前路径
/home/ec2-user
[ec2-user@ip-172-31-34-34 ~]$ cd / # 切换到指定目录,命令格式: cd 绝对路径或者相对路径 其中 cd .. 返回上层目录,cd - 返回上次目录
[ec2-user@ip-172-31-34-34 /]$ ls # 显示当前文件夹下的文件夹和文件,不含隐藏文件
bin cgroup etc lib local media opt root sbin srv tmp var
boot dev home lib64 lost+found mnt proc run selinux sys usr
[ec2-user@ip-172-31-34-34 /]$ ls -al # ls 的参数很多 常用的有-a 显示所有文件夹和文件,含隐藏的 -l 显示具体信息
total 116
dr-xr-xr-x 25 root root 4096 Feb 26 03:02 .
dr-xr-xr-x 25 root root 4096 Feb 26 03:02 ..
-rw-r--r-- 1 root root 0 Feb 26 03:01 .autofsck
-rw-r--r-- 1 root root 0 Nov 20 05:50 .autorelabel
dr-xr-xr-x 2 root root 4096 Nov 16 23:06 bin
dr-xr-xr-x 4 root root 4096 Nov 16 23:07 boot
drwxr-xr-x 2 root root 4096 Feb 28 2014 cgroup
2、新建、复制粘贴、剪切、删除操作:(操作文件时,必须是完整的文件名+文件格式,如:file.txt)
[ec2-user@ip-172-31-34-34 ~]$ mkdir aaa # 创建文件夹
[ec2-user@ip-172-31-34-34 ~]$ touch aaa.txt # 新建文件,指定文件格式,touch命令很强大,可以修改文件的创建、更新等时间
[ec2-user@ip-172-31-34-34 ~]$ ls
aaa aaa.txt
[ec2-user@ip-172-31-34-34 ~]$ cp 路径1/file1 路径2/file2 # 复制文件夹或文件,将文件1复制到文件2,注意:两个文件(夹)的名字可以不一样,但是内容是一样的
[ec2-user@ip-172-31-34-34 ~]$ mv 路径1/file1 路径2/file2 # 移动文件夹或文件,将文件1移动文件2
[ec2-user@ip-172-31-34-34 ~]$ mv file1 file2 # 如果是同一个路径,则实现了重命名的功能
[ec2-user@ip-172-31-34-34 ~]$ rm 文件名 # 删除一个文件,rm 常用参数:-r 递归删除,删除文件夹使用 -f 强制删除
[ec2-user@ip-172-31-34-34 ~]$ rm -rf 文件夹 # 删除一个文件夹,常用-rf
3、文件查找:
[ec2-user@ip-172-31-34-34 ~]$ find 路径 -name 文件名 # 其中路径常用 / 表示从根目录开始查找,文件名可以是文件全称,也可使用通配符
[ec2-user@ip-172-31-34-34 ~]$ which mysql # 常用于显示二进制的可执行程序文件的路径
/usr/bin/mysql
[ec2-user@ip-172-31-34-34 ~]$ whereis mysql # 显示二进制文件的命令文件、源码等相关信息的路径
mysql: /usr/bin/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
4、文件备份,强大的dd命令:
[ec2-user@ip-172-31-34-34 ~]$ dd if=文件 of=文件 count=1 bs=200M # 命令解释:if输入的文件名 of输出的文件名 bs设置每个块大小 count设置总块数
# 1、有个神奇的设备文件 /dev/zero,不占具体内存空间,但是可以提供无穷的数据,常用于创建随意大小的空文件,如:
dd if=/dev/zero of=/var/xx_file.txt count=1 bs=10M
# 2、dd命令常用于制作系统镜像,如
dd if=/dev/cdrom of=linux_64.iso
5、文件权限管理:
[ec2-user@ip-172-31-34-34 /]$ ls -al # 使用ls可显示文件的权限
dr-xr-xr-x 4 root root 4096 Nov 16 23:07 boot
drwxr-xr-x 2 root root 4096 Feb 28 2014 cgroup
[ec2-user@ip-172-31-34-34 ~]$ chmod [参数] 权限 文件或文件夹 # 权限可以使用r w x,也可使用数字表示,如修改文件权限,需要使用-R参数,表示递归
[ec2-user@ip-172-31-34-34 ~]$ chmod -R 777 aaa # 将aaa文件夹权限改为 所有人、全部权限
四、文件内容操作:
内容查看、编辑文件内容,简要介绍强大的vim编辑器
1、文件内容查看:
[ec2-user@ip-172-31-34-34 online]$ cat test.py # cat 命令常用于查看小文件的内容
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "问道编程"
__date__ = "2018-06-04 16:59"
def application(venv, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World from uWSGI"]
[ec2-user@ip-172-31-34-34 online]$ more uswgi.log # more 常用于大文件的查看,可使用空格键或回车向下翻页,有百分比提示
chdir() to /var/www/online
your processes number limit is 3867
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
--More--(0%)
[ec2-user@ip-172-31-34-34 online]$ head -n 5 uswgi.log # head 常用于查看文件的前几行,命令格式:head -n 行数 文件名
*** Starting uWSGI 2.0.17 (64bit) on [Tue Jun 12 07:54:51 2018] ***
compiled with version: 5.5.0 on 12 June 2018 06:58:29
os: Linux-4.14.33-51.37.amzn1.x86_64 #1 SMP Thu May 3 20:07:43 UTC 2018
nodename: ip-172-31-40-62
machine: x86_64
[ec2-user@ip-172-31-34-34 online]$ tail -f uswgi.log # tail 常用于查看文件的尾部,用法同head,但是tail有个强大的功能,tail -f 可以查看动态日志文件,可持续刷新
[ec2-user@ip-172-31-34-34 online]$ cat test.py | tr [a-z] [A-Z] # 将文件中的小写全部转换为大写,tr命令通常和|一起用,格式是 tr 原字符 目标字符
[ec2-user@ip-172-31-34-34 online]$ wc test.py # 统计文件的 行数、字数、字节数,可选参数有 -l -w -c,单独显示行数、字数、字节数
8 25 245 test.py
[ec2-user@ip-172-31-34-34 online]$ stat test.py # 查看文件具体信息
File: 'test.py'
Size: 245 Blocks: 8 IO Block: 4096 regular file
Device: ca01h/51713d Inode: 656710 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 500/ec2-user) Gid: ( 500/ec2-user)
Access: 2018-11-27 07:59:36.000000000 +0000
Modify: 2018-06-12 05:40:12.000000000 +0000
Change: 2018-11-27 08:41:48.066246190 +0000
Birth: -
2、使用vim编辑文件内容:
后续更新、、、、
参考资料:https://blog.csdn.net/qq_31278903/article/details/83146031