Linux常用命令操作
1、文件目录操作
ls命令
所有ls可以进行组合使用
1 | ls -a #列出目录所有文件,包含以.开始的隐藏文件 |
1 | #列出当前目录中以“l"开头的目录的详细内容 |
cd命令
切换目录,其中 ./指当前目录
1 | #进入根目录 |
pwd命令
查看当前工作目录路径
1 | #显示当前目录 |
mkdir 命令
创建文件夹
1 | #在当前目录下创建目录 |
rmdir命令
删除文件夹,递归删除多个目录需要添加-P
,另外只能删除空目录
mv命令
移动或修改文件名
1 | -f #force强制的意思,如果目标文件已经存在,不会询问而直接覆盖 |
cp命令
复制文件或目录到新的路径,和mv操作类似
1 | -i #提示 |
rm命令
删除文件或目录
1 | -f #忽略不存在的文件,不会出现警告,强制删除! |
ln命令
硬链接:A—B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!
软链接: 类似Window下的快捷方式,删除的源文件,快捷方式也访问不了!
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
ln [参数][源文件或目录][目标文件或目录]
1 | #创建软连接 |
tar命令
文件打包与解压
1 | -c #新建打包文件 |
scp命令
Linux远程拷贝文件
1 | #上传文件 |
echo命令
1 | # 若不存在就创建,存在就覆盖,使用>>为追加 |
find命令
find 目录 参数
1 | find [目录] -name "*.c" |
touch命令
创建新文件,也可以使用vim/vi创建
2、文本处理
grep 命令
分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等
1 | grep Aug /var/log/messages #在文件 /var/log/messages中查找关键词"Aug" |
paste 命令
1 | paste file1 file2 #合并两个文件或两栏的内容 |
sort 命令
1 | sort file1 file2 #排序两个文件的内容 |
comm 命令
1 | comm -1 file1 file2 #比较两个文件的内容只删除 'file1' 所包含的内容 |
3、文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。在Linux中我们可以使用 ll
或者 ls –l
命令来显示一个文件的属性以及文件所属的用户和组
1 | lrwxrwxrwx. 1 root root 7 5月 11 2019 bin -> usr/bin |
在Linux中第一个字符代表这个文件是目录、文件或者链接文件等等。
- ==当为【d】则是目录==
- ==当为【-】则是文件==
- ==若是【l】则标识为链接文档(link file)==
- 若是【b】则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- 若是【c】则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中:
- 第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
- 第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
- 第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
chgrp命令
更改文件属组
1 | #-R表示递归更改文件属组,就是在更改某个文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。 |
chown命令
更改文件的属主,也可以同时更改文件的属组
1 | chown [-R] 属主名 文件名 |
chmod命令(重要)
更改文件9个属性
Linux文件属性由两种设置方法,一种是数字,一种是符号。Linux文件的基本权限就有9个,分别是owner、group、others三种分别各有自己的read、write、execute权限。其中
- r:4
- w:2
- x:1
1 | #将test目录下所有文件启动所有权限 |
4、文件内容查看
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- n 显示的时候,顺道输出行号
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
1 | head -n 2 file #查看一个文件的前两行 |
可以使用man [命令]
来查看各个命令的使用文档
1 | cat 文件 |
wc命令
1 | # 查看文件里有多少行 |
5、磁盘管理
df命令
检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df [-ahikHTm] [目录或文件名]
选项与参数:
- -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
- -k :以 KBytes 的容量显示各文件系统;
- -m :以 MBytes 的容量显示各文件系统;
- -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
- -H :以 M=1000K 取代 M=1024K 的进位方式;
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
- -i :不用硬盘容量,而以 inode 的数量来显示
du命令
du [-ahskm] 文件或目录名称
选项与参数:
- -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h :以人们较易读的容量格式 (G/M) 显示;
- -s :列出总量而已,而不列出每个各别的目录占用容量;
- -S :不包括子目录下的总计,与 -s 有点差别。
- -k :以 KBytes 列出容量显示;
- -m :以 MBytes 列出容量显示;
1 | # 查询目录大小 |
6、账户管理
useradd命令
添加用户
- -m: 自动创建这个用户的主目录 /home/shawn
- -G : 给用户分配组!
1 | #创建用户,主目录 /home/shawn,本质往/etc/passwd写入了信息 |
userdel命令
删除用户
1 | #加上-r即删除时将目录空间一并删除 |
usermod命令
修改账户信息
1 | #修改主目录 |
passwd命令
用户口令的管理,用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
passwd 选项 用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
具体账户管理可以参考:Linux账户管理
7、进程管理
- 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号
- 每一个进程呢,都会有一个父进程!
- 进程可以有两种存在方式:前台/后台运行
- 一般的话服务都是后台运行的,基本的程序都是前台运行的!
ps命令
查看系统当前正在执行的各种进程信息
ps -xx
命令参数:
- a 显示所有进程
- -a 显示同一终端下的所有程序
- -A 显示所有进程
- c 显示进程的真实名称
- -N 反向选择
- -e 等于“-A”
- e 显示环境变量
- f 显示程序间的关系
- -H 显示树状结构
- r 显示当前终端的进程
- T 显示当前终端的所有程序
- u 指定用户的所有进程
- -au 显示较详细的资讯
- -aux 显示所有包含其他使用者的行程
1 | # ps -aux 查看所有的进程 |
top命令
cpu状态显示:
- us, user: 运行(未调整优先级的) 用户进程的CPU时间
- sy,system: 运行内核进程的CPU时间
- ni,niced:运行已调整优先级的用户进程的CPU时间
- wa,IO wait: 用于等待IO完成的CPU时间
- hi:处理硬件中断的CPU时间
- si: 处理软件中断的CPU时间
- st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
各进程(任务)的状态监控:
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
- D - 不可中断的睡眠态。
- R – 运行态
- S – 睡眠态
- T – 被跟踪或已停止
- Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
1 | c: 显示完整的命令 |
kill命令
杀死进程,结束任务
1 | #表示强制结束该进程,进程id可通过ps查看 |
nohup命令(后台)
后台执行程序(no hang up不挂起)
nohup command > myout.file 2>&1 &
- command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中
- 2>&1 也就表示将错误重定向到标准输出上
- & 放在命令到结尾,表示后台运行
1 | #启动python程序并将输出输出到python.txt文件中,后台 |
- ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
- Ctrl+c 终止前台命令。
- jobs 查看当前有多少在后台运行的命令。jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
8、系统命令
-
shutdown -h now 关闭系统(1)
-
init 0 关闭系统(2)
-
telinit 0 关闭系统(3)
-
shutdown -h hours:minutes & 按预定时间关闭系统
-
shutdown -c 取消按预定时间关闭系统
-
shutdown -r now 重启(1)
-
reboot 重启(2)
-
logout 注销
-
time 测算一个命令(即程序)的执行时间
-
uname -a # 查看系统内核信息
-
cat /proc/version # 查看系统内核版本
9、网络相关
1 | #配置dns |
还有iperf3带宽测试,iperf3是一款带宽测试工具,它支持调节各种参数,比如通信协议,数据包个数,发送持续时间,测试完会报告网络带宽,丢包率和其他参数
1 | # 首先安装 |
对于shell的学习,可以参考: