【Linux学习笔记】Linux基础
Unix/Linux架构
由内到外:硬件-核(Kernel)-Shell-应用
Process vs. Threads 进程与线程
- 进程是独立的,线程是进程的子集
- 一个进程的多个线程共享内存、地址空间和其他资源
- 同一进程中线程之间的上下文切换通常比进程之间的上下文切换要快。
基本命令
进程process
ps
当前进程的展示
pstree
显示进程树,比较全面
top
提供正在运行的系统的动态实时视图
htop
更全面的系统的动态实时视图的展示
w
展示不同用户的登录记录和其在做什么
history
历史命令
硬盘和文件
df
文件系统硬盘空间使用情况(disk files)
df -i
--inode 显示inode, 主要是用来查看硬链接的
df -h
--human-readable 使用人类可读的格式(文件大小用字节为单位表示)
inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。
表面上,用户通过文件名打开文件,实际上,系统内部将这个过程分为三步:
1.系统找到这个文件名对应的inode号码;
2.通过inode号码,获取inode信息;
3.根据inode信息,找到文件数据所在的block,并读出数据。
其实系统还要根据inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝。
du
du -sh *
du -sh
ls
列出目录内容
ls -lrt s*
按时间顺序列出目前工作目录下所有名称是 s 开头的文件 :
ls -lih
使用人类可读的格式列出目录内容
文件
find
find ./ -name "search*.go"
find ./ -size +10k
find ./ -name "no-use.log -exec "rm -fr {}"
tail
tail -f -n 10 test.go
显示该文件最后
zip
压缩率不高,但使用广泛、兼容性好
zip <file.zip> <file>
压缩文件
zip -r <dir.zip> dir1/ dir2/
压缩文件夹
bzip2
bzip2 <file>
无法递归的对目录下文件进行压缩与解压操作
tar
tar xvzf go.tar.gz
解压缩
tar cvzf go.tar.gz go/*
压缩
date
date +%Y%m%d -d "1day"
可以设置时间推迟一天
date +"mylog-%Y-%m-%d.log"
Shell编程
管道和重定向
command1 | command2 |...
管道
ls -lh | grep go
tail -f log/searcher.log | grep WARNING | grep cmd:1
> >>
重定向
command > output.file
command >> output.file
command > output.file 2>&1
关于
2>&1
的介绍,可以参考文章深入理解Linux shell中2>&1的含义
变量
系统变量 | 含义 |
---|---|
BASH=/bin/bash | 变量名 |
BASH_VERSION=1.14.7(1) | shell版本 |
COLUMNS=80 | 屏幕输出列数 |
HOME=/home/vivek | home文件夹 |
LINES=25 | 屏幕输出行数 |
LOGNAME=students | 登录名 |
OSTYPE=Linux | OS类型 |
PATH=/usr/bin:/sbin:/bin:/usr/sbin | PATH设置 |
PS1=\({debian_chroot:+(\)debian_chroot)}\u@\h:\w$ | prompt settings |