前言
写给所有的 Linux 小白和我。
tips: 如果哪个命令不会用,直接 command --help
召唤帮助列表就完事了。
文件
查看目录ls # 目录内容
ls path # 显示指定路径目录下的内容
ls -a # 显示目录全部内容,包括隐藏文件(a 即 all 的意思)
ls -al # 在显示全部的基础上,以列表的形式显示
ls -R # 递归显示目录内容
# ls -li 显示的信息解释 |
属性 | 描述 |
---|---|
inode | 文件信息索引编号(目录是特殊的文件) |
文件类型 | - 代表普通文件、d 代表目录、l 代表链接(例 java -> /jdk7/bin/java ,访问 java 实际是访问链接的地址)即快捷方式 |
文件权限 | rw-rw-r-- 依次代表 所属用户可读,可写,不可执行,所属用户组可读,可写,不可执行,其他用户可读,不可写,不可执行(x 表示可执行) |
链接数 | 数值为 1 代表自身(目前不懂还这个概念) |
文件所属用户 | 文件归谁所有,例如上述的 tmp.txt 文件就是归于用户 hadoop(root 用户就会显示 root) |
文件所属用户组 | 同样的道理,tmp.txt 文件归于用户组 hadoop |
文件大小 | tmp.txt 文件大小 144 byte。-h 参数增强可读性 tmp 文件大小 4096 byte 会显示为 4.0k |
访问或修改时间 | 指的是最后的一次访问或修改 |
打印路径pwd # 显示当前所在目录的绝对路径
pwd -P # 目录连接链接时,显示出实际路径,而非使用链接(link)路径
创建目录mkdir dir # 在当前路径下创建一个目录
mkdir -p dir1/dir2 # 一次性创建多级目录
删除文件rm file # 删除文件
rm -r dir # 删除目录
rm -rf dir # 强制删除目录及目录下的所有内容且忽略提示
sudo rm -rf /* # 自杀式毁灭打击!
拷贝文件cp file1 file2 # 复制文件1为文件2
cp -r dir1 dir2 # 复制目录1为目录2;如果目录2不存在,自动创建
重命名# 重命名文件或目录
# 若 file2 是目录,则移动 file1 到 file2 下
mv file1 file2
# 其实它是移动文件或目录,重命名是特殊情况下的特殊效果
创建文件touch filename.suffix # 创建一个空文件(指定文件名和文件后缀名)
cat > file # 键盘输入内容到文件(覆写文件内容),Ctrl + C 终止输入
cat >> file # 追加文件内容
cat file1 >> file2 # file1 内容追加到 file2
cat file # 一次性打印文件全部内容
more file # 打印文件内容,Enter 键翻页
更详细的重定向介绍:Linux 重定向命令
进程管理
查看进程# ps 一般和 grep 结合使用,查看某个进程的信息
ps -ef # 显示当前的活动进程
ps # 仅仅使用 ps ,只会显示 ps 和 bash(shell 进程)
ps -el # -l: long format, 显示更多进程信息
ps -ef | grep 3306 # 显示含有 3306 的进程信息
任务管理器top # 动态显示当前所有的运行中进程(命令行版的进程管理器)
top -u username # 仅显示某个用户的进程
停止进程# 一般套路: 通过 ps or nestat | grep 结合使用确定目标进程或服务的 PID,然后 kill 掉。
# 如果有些进程存在子进程,直接 kill -9 的话,强制进程在运行时突然终止,进程在结束后不能自我清理。
# 会导致系统资源无法正常释放,不推荐使用,除非其他办法都无效。
kill pid # 根据进程的 pid, 杀掉进程
kill -9 pid # 根据进程 pid, 强制终止进程
killall proc_name # 杀掉所有进程名含有 ‘proc_name’ 的进程
更多进程管理细节,移步这里:Linux 查看进程和终止进程的技巧
后台运行# 关于 bg 和 fg 命令
# 情景: 如果运行的一个程序需要很长的时间,但你又想干其他的事~
# 这时就可以 Ctrl+Z, 挂起这个程序(把前台执行的程序放到后台,并且暂停它)
# 根据对应的 job 作业号在后台启动它
jobs # 显示当前所有后台运行的程序
bg job_number # 后台启动一个暂停的程序
fg job_number # 将后台运行的程序切换到前台继续运行
# 另一个常用的做法,在执行的命令后加上 & |
搜索
locate
命令# 自身体会,查找真是太常用了!
# 先说 locate 命令
# 默认模糊查询,列出查询结果的绝对路径,所以找的是文件还是目录是无所谓的
# 该命令有一个自己的索引库,无参数使用就是从库里搜索结果并列出
# 类似 Win 下的软件:everything,不过 everything 每次启动都会刷新索引库
# 索引库并非实时更新,所以无参数总会搜出已经不存在的文件
# 参数 -e 代表仅列出当前系统中存在的结果,所以我通常都会加上
locate -e filename
sudo updatedb # 手动更新索引库。默认一天一更新
find
命令
# 由于 locate 索引库非实时的缘故 |
系统信息
CPU# 查看 CPU 型号
cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq
# 查看物理 CPU 个数
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
# 查看每个物理 CPU 中 core 的个数(核数)
cat /proc/cpuinfo | grep "cpu cores" | uniq
# 查看逻辑 CPU 的个数(物理数 × 核心数)
cat /proc/cpuinfo | grep "processor" | wc -l
Memoryfree -h
从应用程序的角度来看,可用内存 = free + buffers + cached. 图中可用内存即为 13818M = 13G + 325M + 493M
(未完待续 ……)