申明:内容首发于公众号:写点代码,感兴趣的小伙伴可以关注~
Linux是什么?
Linux系统是一个多用户的系统,一个主机连接着多个字符终端,比如打字机,包含键盘,显示器,串口,简称tty。早期,主机负责程序的存储和处理,字符终端负责输入与输出。主机和终点之间使用电缆连接。如今,使用虚拟终端,使用tcp链接代替串口线,双向传递字节流。,如果使用安全终端,可以在tcp连接上进行加密处理。在不追求严谨的情况下,我们可以认为就是一个操作系统,然后我们使用命名行进行操作。
通过基础命令去了解Linux
1. Linux用户分为超级用户(root)和普通用户。超级用户可以创建普通用户:创建的用户可以在/etc/passwd文件查看。Linux用户可以使用passwd更换口令,Root用户无需输入之前的,直接重新设置口令;root也可以直接帮忙重新设置普通用户的口令,但不知道之前的口令是什么,因为密码会被hash加密。普通用户更换口令的时候需要知道之前的口令是什么。
root@my:/#useradd testuser
root@my:/# cat ../etc/passwd
testuser:x:1003:1003::/home/testuser:/bin/sh
加密过程
2.通过man(查看联机手册)来了解命令
man ls//man commod_name;//了解一个命令的具体用法,表示查看联机手册
man 3 strstr//man section_ name commod_name 1表示命令,2表示系统调用 3表示库函数 5配置文件
3 .了解当前linux的时间
date //读取当前系统时间
date “+%Y-%m-%d %H:%M:%S Day %j”//Day 后面表示今天的第多少天
date “+%s”//第一个字符必须为+ 从1970算起
ntpdate 借助ntp协议校对时间
cal //打印日历
cal year //打印这一年的日历
cal month year//打印这个月的
root@my:/# date
Wed Oct 21 22:07:07 CST 2020
root@my:/# date "+%Y-%m-%d %H:%M:%S Day %j"
2020-10-21 22:07:17 Day 295
root@my:/# date "+%s"
1603289246
root@iZ8vbf6h2cii62o5uigsjiZ:/# cal
October 2020
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
root@iZ8vbf6h2cii62o5uigsjiZ:/# cal 3 2020
March 2020
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
4.计算器
类似一个在命令行输入python一样,会进行一个计算器,进行各种基础运算
bc //计算器
bc -l//设置精度
通过看参数了解系统状态
Who //谁在系统
Who am i //当前系统终端的登陆用户
Whoami //只列出当前终端登录用户的名字
tty//当前终端的设备文件名
root@my:~# who
root pts/0 2020-10-25 21:34 (125.33.163.37)
root@my:~# who am i
root pts/0 2020-10-25 21:34 (125.33.163.37)
root@my:~# whoami
root
root@my:~# tty
/dev/pts/0
1.uptime:查看设备开机的年龄
root@my:~# uptime
21:39:02 up 161 days, 11:28, 1 user, load average: 0.00, 0.00, 0.00
// 当前系统时间 已经开机的天数 用户数 系统cpu的负
2.Top:列出资源占用排名靠前的进程
root@my:~# top
top - 21:54:29 up 161 days, 11:43, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 87 total, 1 running, 52 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4039112 total, 983840 free, 98128 used, 2957144 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3656200 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4383 root 20 0 41676 3732 3168 R 0.3 0.1 0:00.02 top
PID:进程的编号
USER:用户名称
PR:优先级
NI: nice值。负值表示高优先级,正值表示低优先级
VIRT:进程逻辑地址空间大小,也就是我们用malloc等申请的空间
RES:进程占用的物理内存数
SHR:与其他进程共享的内存数
S: 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠..)
%CPU:占用CPU百分比
%MEM :占用内存百分比
TIME+:占用cpu的时间
3.Ps:查询进程状态(Process Status)
root@my:~# ps
PID TTY TIME CMD
4329 pts/1 00:00:00 bash
4390 pts/1 00:00:00 ps
root@my:~# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 4329 4281 0 80 0 - 5662 wait pts/1 00:00:00 bash
0 R 0 4391 4329 0 80 0 - 7228 - pts/1 00:00:00 ps
root@my:~# ps -f
UID PID PPID C STIME TTY TIME CMD
root 4329 4281 0 21:54 pts/1 00:00:00 -bash
root 4392 4329 0 22:03 pts/1 00:00:00 ps -f
root@my:~# ps -e
PID TTY TIME CMD
1 ? 00:00:48 systemd
2 ? 00:00:01 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 mm_percpu_wq
7 ? 00:00:01 ksoftirqd/0
8 ? 00:19:41 rcu_sched
9 ? 00:00:00 rcu_bh
...
ps不加任何参数:列出当前终端启动的进程
列出的条目:pid,tty,time,command
ps -e:列出系统中的所有进程
ps -f:以full格式列出当前终端启动的进程
ps -l:以long格式列出当前终端启动的进程
UID:用户id
PID:进程ID
PPID:父进程的ID
C:CPU占用指数,最近一段时间占用cpu的情况
PRI:优先级
NI: nice值。负值表示高优先级,正值表示低优先级
ADDR:ADDR 是 kernel function,指出该进程在内存的哪个部分
SZ :进程逻辑内存大小
WCHAN :进程在内存的何处睡眠(wait channel)
TTY :设备终端名称
TIME :占用cpu的时间
CMD:命令名
4.Free:了解内存使用情况
root@my:~# free
total used free shared buff/cache available
Mem: 4039112 98308 983624 2992 2957180 3656004
Swap: 0 0 0
total:内存总量
used:使用了多少内存
free:有多少内存剩余
shared:有多少共享内存
buff/cache:用于缓冲的内存,linux为提高效率会使用不用的内存用于磁盘缓冲
available:不算用于缓冲的,有可以使用的内存有多少
5.vmstat 了解系统负载
root@my:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 983860 220760 2736424 0 0 0 1 1 1 0 0 100 0 0
参考资料:Linux开发环境及应用(mooc),图片来自课程ppt。