【Linux学习笔记】Linux基础

Unix/Linux架构

由内到外:硬件-核(Kernel)-Shell-应用

Process vs. Threads 进程与线程

  1. 进程是独立的,线程是进程的子集
  2. 一个进程的多个线程共享内存、地址空间和其他资源
  3. 同一进程中线程之间的上下文切换通常比进程之间的上下文切换要快。

基本命令

进程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

函数

原文地址:https://www.cnblogs.com/lvjincheng/p/13418535.html