常用操作
- Ctrl+A光标跳至命令行开头
- Ctrl+E光标跳至命令行结尾
- Ctrl+U删除光标之前的内容
- Ctrl+K删除光标之后的内容
- Ctrl+L清屏,相当于#clear
- Ctrl+C退出当前正在执行的进程或退出当前正在编辑的命令行,开始新的一行命令等等
- Ctrl+D退出当前用户,相当于#logout或#exit
- Shift+pageup向上翻看内容
- Shift+pagedown向下翻看内容
常用命令
- cd /home 跳到某个目录(/home)下
- 注意:如果cd后面没任何参数,则无论在哪个目录,都会直接跳到用户基本base目录下,如果要返回,之前的目录,则#cd - (减号)即可
- ls /home 查看目标目录(/home)下的文件,如果ls后面不带目录参数,则查看当前目录文件
- cp /home/a /usr/local/b 将源文件a(含目录)复制到名为b(含目录)的文件
- mv /home/a /usr/local/b 将源文件a(含目录)剪切粘帖到名为b(含目录)文件
- rm /home/a 删除a文件(夹),一般加参数-rf强制删除,如果a是文件夹,则文件夹中的内容一并删除
- mkdir /home/a 在home下新建一个文件夹a
- cat hello.txt 显示文件的文本信息
- vi/vim hello.txt 编辑(新建)一个文件
- pwd 查看当前所在位置(目录)
- who 查看当前所有终端;tty 查看当前终端是哪个
- history 历史命令
- xxd -s 0 -l 8 file 以十六进制形式显示file的位置0开始,长度为8的数据
- scp /home/file root@www.baidu.com:/home/dir
scp是从一个linux主机复制到另一个linux主机,它的基本格式是:scp [选项] 本地文件名 远程用户名@IP地址:远程文件名。注意:选项和cp类似,本地/远程文件名需要绝对路径,IP地址可以是域名:
scp administrator@192.168.3.137:E:/temp/klipper.zip /home/ysz/klipper.zip
将windows的E盘temp文件夹下的klipper.zip复制到/home/ysz下
- rm -r !* !*代表上一行命令的参数,这里使用上一行命令的参数作rm的参数
属性命令
- stat hello.txt 查看文件详细信息,可查看创建时间,修改时间,访问权限等
- file a.out 查看文件类型,ascii文本文件,二进制可执行文件,超链接文件等
- type ls 查看命令类型
- which ls 查看命令位置
用户管理
- 修改用户的各指令实际上是修改/etc/passwd(用户名),/etc/shadow(用户密码),/etc/group(用户组),/etc/gshadow(用户组密码,一般不用)这四个文件
- 尽量不要直接修改上面的文件,比如改了/etc/passwd后,没有对应的密码,就不能使用sudo了,这时就登录不了,也操作不了了
- id 查看当前用户名,用户组及id
- useradd ysz 添加用户ysz,默认其uid会在已有的用户uid上+1
-g 指定用户组
-G指定副用户组
-s指定shell
-u指定uid
-d指定家目录
-m自动在/home下创建与用户名相同的家目录-l newusername oldusername 修改用户名
useradd ysz -u 1100 -g YSZ -G test_group1,test_group2 -s /usr/sbin/nologin -d /ysz
- userdel ysz 删除用户ysz
-r自动删除ysz相关家目录,日志等
- groupdel ysz 删除组
- groupmod ysz -g 1200 修改组的ID号
- usermod ysz -u 1200 修改用户,这里的参数和useradd相似,差异就是它必须跟已经存在的用户名
- passwd ysz 为用户ysz设置密码,如果不跟任何参数,就修改本用户密码
- su root 切换用户到root
- id 查看当前用户/组信息,-u当前用户uid编号
文件权限管理
一个文件的权限就是文件相对于各用户开放的权限,r可读,w可修改,x可执行
- ls -l 查看文件权限,十个字符,第1个字符是文件类型,后面是三组(UGO)权限,分别是U(用户权限),G(所属组权限),O(其它用户的权限)
- chown user.group file.txt 将file.txt所属的用户改为user,组改为group,这里用户和组可以只要一个
- chmod o+x file.txt 使O(其它用户)对file.txt有执行的权限
- chmod g-w file.txt 去除所属组对file.txt的写权限
- chmod a=r-x file.txt 对all(所有用户)开放读和执行
- chmod u=rwx,g=rx,o=x file.txt 对所有者开放读写执行,所属组开放读执行,其它用户只能执行
服务
- 服务状态:sudo systemctl status sshd
- 停止服务:sudo systemctl stop sshd
- 开启服务:sudo systemctl start sshd
- 禁止开机启动:sudo systemctl disable sshd
- 使能开机启动:sudo systemctl enable sshd
- 查看当前所有已经注册的服务:sudo systemctl list-unit-files --type=service
- 卸载服务过程:查看所有服务获取准确的服务名 -> 停止服务 -> 禁止开机启动 -> 删除配置文件/etc/systemd/system/服务名.service -> 删除服务所有日志文件/var/log/服务名/* -> 删除服务所有库文件/var/lib/服务名/*
界面
- 开机后不进入图形界面:sudo systemctl set-default multi-user.target
- 开机后进入图形界面:sudo systemctl set-default graphical.target
- 查看当前进入模式:sudo systemctl get-default
磁盘命令
- df -h 查看磁盘信息
- free -h 查看内存信息
- du -sh dir/ 查看文件夹占用磁盘大小,s只显示整个文件夹大小,不加s则会显示里面的各目录大小,h显示人能理解的大小单位,如G,M,K等
- lsblk 查看设备挂载信息
- truncate -s 2G /path/to/file 给file分配大小为2G的空间; truncate -s +500M /path/to/file为file追加500M的空间
- dd if=/dev/zero of=/path/to/file bs=1M count=500 复制一段内容(/dev/zero中取出的数据,即零数据)到file中,每段是1M,复制500段。这可以替代truncate分配文件空间,但是它是会写入数据的,truncate则不会写入
- mkfs.ext4 /path/to/file 格式化文件为ext4格式
- sudo mount /path/to/file /path2/to/dir 将文件挂载到dir上
网络
- netstat -an 查看当前所有连接(与windows命令一致),-a显示所有,-n在linux上不解析名称/windows上以数字形式显示端口号和地址,-t在linux上显示tcp连接,-u在linux上显示udp连接,-p在linux上显示PID
- ss与netstat类似
- curl ipinfo.io/ip 请求并返回公网IP(与windows命令一致),curl ipconfig.me同样的功能(仅linux上可用)
- ifconfig 或者 ip a查看当前联网状态以及IP(内网)地址,hostname -I也可以查看,windows上为ipconfig
- ip link set eth0 down/up 关闭/打开网络适配器eth0,与ifdown/ifup eth0一致
内核与系统相关
- uname -a 查看内核信息(全部) -r 只看内核版本
- lscpu 查看CPU主频/架构等信息
- cat /proc/cpuinfo 动态的查看当前CPU状态,以及可能的一些主板信息
- ps aux 查看进程(静态),ps -eo uid,pid,state,nice,rtprio,time,comm可指定查看进程的状态,优先级,命令等, ps -el查看内核线程
- top 动态进程
时间相关
- date 查看当前时间日期,date -s "2026-10-10 12:30:00",设置系统时间
- sudo hwclock --systohc 将当前时间写到RTC时钟,断电重启后,系统时间不丢失
- timedatectl status 查看当前时区等信息
- timedatectl list-timezones 查看所有可用时区,timedatectl set-timezone Asia/Shanghai设置时区
- 时间自动同步需要ntp服务,可以使用systemctl status ntp查看它是否启用
调试命令
- dmesg 查看内核启动,硬件驱动等相关信息,对系统应用开发非常重要
- journalctl 基于systemd日志系统,可以查看系统运行中各服务的日志信息
journalctl -u nginx #过滤查看,只看与nginx有关的服务日志
journalctl -f #动态实时显示最新日志
journalctl _PID=2210 #PID过滤,只查看进程PID为2210的日志
journalctl --since="2024-07-22" --until="2024-07-25"查看从20240722到20240725期间的日志
- zcat /proc/config.gz 查看内核配置(SDK级)选项
- uptime或top查看CPU负载