Linux 常用命令
- 文件: Everything is file
- 进程: 文件的运行时态
- 网络: 特殊的文件
文件
在Linux中所有的内容都是以文件的形式来进行抽象的,如进程、网络、硬件等,都可以抽象成文件,对其进行IO操作
相关命令
查看命令的详细信息,可以使用 man 或者 --help
例如: man ls or ls --help
man的信息更全, --help显示的是主要信息
处理目录常见命令
- ls(英文全拼:list files): 列出目录及文件名 (以"."开头的文件为隐藏档案, 不会列出)
语法 ls [-alrtAFR] [name...]- -a 显示所有文件及目录
- -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
- -r 反序列出
- -t 按文档建立时间列出, 最新文件在前
- -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
- -R 列出目录及子目录下所有文件
- -i, --inode 打印索引节点(inode --> index node)信息
- 硬链接: ln 原始档 链接档 (inode一样, 删除原始档后,链接档独立存在)
- 软链接: ln -s 原始档 链接档 (相当于快捷方式, inode 不一样,删除原始档后,链接档 No such file or directory)
- 修改原始档,硬链接档,软链接档 中任何一个的内容, 其他文件跟着改变 (软链接指向的原始档的路径, 硬链接和原始档的索引节点相同)
- cd(英文全拼:change directory):切换目录
- pwd(英文全拼:print work direcytory):显示目前的目录
- mkdir(英文全拼:make directory):创建一个新的目录
- rmdir(英文全拼:remove directory):删除一个空的目录 (删除非空目录使用 rm -r)
- cp(英文全拼:copy file): 复制文件或目录
- rm(英文全拼:remove): 移除文件或目录 (-f 强制 , -i 询问 , -r 递归删除目录及其内容)
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
1. df
(英文全拼 disk free)
显示文件系统磁盘的使用情况统计 第二列为 1K-blocks
- df -h 大小显示为 G M K ,第二列为 size , 更易阅读
2. pwd
(英文全拼:print work directory)
显示当前工作目录的绝对路径
3. chmod
(英文全拼:change mode)
控制用户对文件的权限
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
语法
chmod [-cfvR] [--help] [--version] mode file...
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
- --help : 显示辅助说明
- --version : 显示版本
mode 为权限设定字符串 格式如下
[ugoa...][[+-=][rwxX]...][,...]
- u (user)文件所有者,g (group) 文件所有者所在组,o (others) 所有其他用户,a (all) 所有用户, 相当于 ugo
- +表示增加权限、- 表示去除权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
chmod 777 filename #修改filename文件权限为 rwxrwxrwx 所有用户可写可读可执行
等效 chmod a+rwx filename / chmod ugo+rwx
chmod ugo+w filename #将filename文件设置为所有人都可写入
文件内容查看
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
tail -f filename 循环读取filename最后几行,动态查看 (使用vim,sed等编辑后无法追踪)
tail -F filename 根据文件名追踪
查找文件内容
grep
查找文件里符合条件的字符串 (可用正则表达式)
grep "被查找的字符串" 文件名
以递归的方式查找符合条件的文件(在指定目录及其子目录下查找符合条件的文件,并打印内容)
grep -r "被查找的字符串" "目录/文件"
反向查找
grep -v test *test*
查找文件名中包含 test 的文件中不包含test 的行
参数
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
查找文件
find
在指定目录下查找文件
find *.py
查找当前路径下拓展名为py的文件 也可用 ls *.py
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
awk
sed
创建新文件
- cat>>newfile (输入内容,按Ctrl D 保存退出)
- touch newfile (创建一个新的空文件)
- vi/vim newfile (保存退出 :wq; 或者:w newfile :q)
进程
linux进程的5种基本状态:
- R (Running) 运行(正在运行或在运行队列中等待)
- S (Sleeping) 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
- D (TASK_UNINTERRUPTIBLE) 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
- Z (TASK_DEAD - EXIT_ZOMBIE) 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
- T (Stopped) 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
相关命令:
ps
ps -ef 查看进程
ps aux 显示所有进程详细信息
ps -ef --sort=pid 使用--sort=xxx 排序 ; --sort=-xxx 逆序
ps aux|grep init 查找进程
参数
top
实时显示 process 的动态
top -p 139 实时显示进程号pid为139的进程信息,CPU、内存占用率等
网络
netstat
显示网络状态
usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }
-r, --route display routing table
-i, --interfaces display interface table
-g, --groups display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections
-v, --verbose be verbose
-W, --wide don't truncate IP addresses
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other/more information
-p, --programs display PID/Program name for sockets
-o, --timers display timers
-c, --continuous continuous listing
-l, --listening display listening server sockets
-a, --all display all sockets (default: connected)
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
-Z, --context display SELinux security context for sockets
<Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
{-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
netstat -a 显示详细的网络状况
netstat -tlnp 查看 TCP 协议进程端口,-t 指的是 TCP 协议; -l (listening)显示监听服务器套接字;-n 指不需要解析远程服务器的名字,加快速度;-p 显示进程名
netstat -tln | grep 8080 查看端口8080的使用情况
lsof -i :8080 查看端口属于哪个程序
ifconfig
显示或设置网络
远程命令
ssh
scp
tar 压缩解压
touch 1.txt
# 新建空白文件 1.txt
tar -czvf 1.tar.gz 1.txt
# 压缩 1.txt 文件为 1.txt
# 参数说明
-c或--create 建立新的备份文件
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-v或--verbose 显示指令执行过程
-f<备份文件>或--file=<备份文件> 指定备份文件
tar -tzvf 1.tar.gz
# 列出 1.tar.gz 里的文件
# 参数说明
-t或--list 列出备份文件的内容
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-v或--verbose 显示指令执行过程
-f<备份文件>或--file=<备份文件> 指定备份文件
tar -xzvf 1.tar.gz
# 解压文件 1.tar.gz 中的文件到当前路径
# 参数说明
-x或--extract或--get 从备份文件中还原文件
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-v或--verbose 显示指令执行过程
-f<备份文件>或--file=<备份文件> 指定备份文件