Linux 常用命令
常用命令
清屏命令
clear
reset
查找大文件
find . -type f -size +100M
删除30天前的文件
find /disk/www/www.tdb.com/attach/ -mtime +30 -name "*.jpg" -exec rm -rf {} \;
服务器运行时间
uptime
最近几次重启记录
last reboot
结束执行中的程序或工作
kill [options] [param]
-a:当处理当前进程时,不限制命令名和进程号的对应关系;
-l:<信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
-s:<信息名称或编号>:指定要送出的信息;
-u:指定用户
按照进程名杀死进程
pkill [options] [param]
-o:仅向找到的最小(起始)进程号发送信号;
-n:仅向找到的最大(结束)进程号发送信号;
-P:指定父进程号发送信号;
-g:指定进程组;
-t:指定开启进程的终端
-f:正则表达式模式将执行与完全进程参数字符串匹配
使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程
killall [options] [param]
-e:对长名称进行精确匹配;
-l:忽略大小写的不同;
-p:杀死进程所属的进程组;
-i:交互式杀死进程,杀死进程前需要进行确认;
-l:打印所有已知信号列表;
-q:如果没有进程被杀死。则不输出任何信息;
-r:使用正规表达式匹配要杀死的进程名称;
-s:用指定的进程号代替默认信号“SIGTERM”;
-u:杀死指定用户的进程
查看端口占用情况
netstat -tln | grep 8080
查看端口属于哪个程序
lsof -i :8080
远程登录
ssh userName@ip
查看文件头10行
head -n 10 example.txt
查看文件尾10行
tail -n 10 example.txt
显示新增内容
tail -f exmaple.log
列出目标目录中所有的子目录和文件
ls [options] [file]
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
文件下载
wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
当前工作目录
pwd [options]
-L 目录连接链接时,输出连接路径
-P 输出物理路径
查看登录用户
w
-h 忽略头文件信息
-u 显示结果的加载时间
-s 不显示JCPU, PCPU, 登录时间
谁登录了系统
who - [husfV] [user]
-h 不要显示标题列
-u 不要显示使用者的动作/工作
-s 使用简短的格式来显示
-f 不要显示使用者的上线位置
-V 显示程序版本
查看恶意ip试图登录次数
# 日志位置 /var/log/btmp
lastb | awk '{ print $3}' | sort | uniq -c | sort -n
内存使用情况
free [options]
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s <间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
任务管理器
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p 通过指定监控进程ID来仅仅监控某个进程的状态。
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名
文件或程序搜索
whereis [-bmsu] [BMS 目录名 -f ] 文件名
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
快速搜索指定档案
locate [选择参数] [样式]
-e 将排除在寻找的范围之外。
-1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。
这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息
磁盘信息
磁盘使用情况
df [options] [file]
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
目录使用情况
du [options] [file]
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
当前目录大小
du -sh .
当前目录下文件或目录的大小
du -sh *
显示前十个占用空间最大的文件或目录
du -sh * | sort -nr | head
文件目录
创建新文件
touch [options] [file]
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
写入文件
echo text > file.txt
echo text >> file.txt
创建目录
mkdir /tmp/test
删除目录
rmdir /tmp/test
切换目录
cd [dirname]
删除文件
rm [options] file.txt
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
重命名文件
rename [-v] [-n] [-f] perlexpr [files]
第一个参数:被替换掉的字符串
第二个参数:替换成的字符串
第三个参数:匹配要替换的文件模式
支持通配符: ? 可替代单个字符 * 可替代多个字符
//把文件名中的AA替换成aa
rename "s/AA/aa/" *
//把.html 后缀的改成 .php后缀
rename "s//.html//.php/" *
//把所有的文件名都以txt结尾
rename "s/$//.txt/" *
//把所有以.txt结尾的文件名的.txt删掉
rename "s//.txt//" *
复制文件
cp [options] source dest
-a 尽可能将档案状态,权限等资料都照原状予以复制。
-r 若source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制
移动文件
mv [options] source dest
-i 若目的地已有同名档案,则先询问是否覆盖旧档。
链接文件
ln [options] source dist
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
显示文件内容
cat [options] [file]
一次显示整个文件:cat filename
从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
将几个文件合并为一个文件:cat file1 file2 > file
显示部分文件内容
head [options] [file]
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
显示内容并加上行号
nl [options] [file]
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
-p 在逻辑定界符处不重新开始计算。
使用 sed 命令处理文本
sed [options] 'command' [file(s)]
-e: 允许对多个编辑命令进行脚本化。
-f: 从文件中读取编辑命令。
-i: 直接编辑文件,而不是输出到标准输出。
-n: 不打印模式空间的内容,除非指定了打印命令。
sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /etc/php.ini
sed -i -z 's/http {.*}/http { \n # Launch File\n include \/disk\/rules\/launch.conf;\n}/g' /etc/nginx/nginx.conf && cat /etc/nginx/nginx.conf
用户管理
新增用户
useradd staff -s /sbin/nologin
新增用户,并指定目录
useradd staff -s /sbin/nologin -d /disk/www/edu.veryide.com
更改用户,并指定目录
usermod staff -s /sbin/nologin -d /disk/www/edu.veryide.com
删除用户
userdel staff
更改密码
passwd staff
查看所有用户的列表
cat /etc/passwd
用户权限
更改所有者
chown -R staff /www/html
更改所有者和组
chown -R staff:net /www/html
更改读写权限
chmod 777 /www/html
更改用户组
chgrp mysql /var/lib/mysql
用户组
创建组
groupadd test
修改组
groupmod -n test2 test
删除组
groupdel test2
查看当前登录用户的组内成员
groups
查看用户组
cat /etc/group
压缩文件
语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
语 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
我想把一个文件 abc.txt 和一个目录 dir1 打包
zip -r data.zip abc.txt dir1
解压缩 data.zip 文件
unzip data.zip
同时解压多个 zip 文件
unzip abc\?.zip
注释:?表示一个字符,如果用*表示任意多个字符。
查看压缩文件 large.zip 中的内容
unzip -v large.zip
验证压缩文件 large.zip 是否完整
unzip -t large.zip
剔除压缩文件中的子目录关系
unzip -j music.zip
把整个文件夹 folderTared 的内容打包成一个gz文件:
tar czvf data.tar.gz /theDir/folderTared
把压缩的gz文件恢复到指定目录下:
tar xzvf data.tar.gz /theDir/
gunzip
格式
gunzip [-acfhlLnNqrtvV][-s ][文件...]
gunzip [-acfhlLnNqrtvV][-s ][目录]
主要参数
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备。
-f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在,以及该文件是否为符号连接。
-h或--help:在线帮助。
-l或--list:列出压缩文件的相关信息。
-L或--license:显示版本与版权信息。
-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。
-N或--name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q或--quiet:不显示警告信息。
-r或--recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
-S或--suffix:更改压缩字尾字符串。
-t或--test:测试压缩文件是否正确无误。
-v或--verbose:显示指令执行过程。
-V或--version:显示版本信息。
使用gzip压缩(保留源文件)
gzip –c filename > filename.gz
解压gzip文件(保留源文件)
gunzip –c filename.gz > filename
时间与日期
# 删除当前默认时区
rm -rf /etc/localtime
# 复制替换默认时区为上海
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 修改时区(备用)
dpkg-reconfigure tzdata
# 重新选取了时区
tzselect
# 当前时间
date
# 当前 UTC 时间
date -u
时区更改
# 时区查看
timedatectl
# 列出所有时区
timedatectl list-timezones
# 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
timedatectl set-local-rtc 1
# 设置系统时区为上海
timedatectl set-timezone Asia/Shanghai
# NTP 时间同步
*/20 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null &
显示和设置行为选项
# 显示选项,以 globstar 为例
shopt globstar
# 打开选项
shopt -s globstar
# 关闭选项
shopt -u globstar
修改 nginx 用户和组ID
# 查看 nginx 用户详细信息
# 输出用户名、密码、用户 ID、群组 ID、用户 ID 信息、用户Home目录和 Shell
# nginx:x:995:993:nginx user:/var/cache/nginx:/sbin/nologin
cat /etc/passwd|grep nginx
# 停止 nginx 服务
systemctl stop nginx
# 修改 nginx 新用户和组ID
usermod -u 993 nginx; groupmod -g 991 nginx;
# 修改文件权限
find / -user 995 -exec chown -h nginx {} \;
find / -group 993 -exec chgrp -h nginx {} \;
# 启动 nginx 服务
systemctl start nginx
参考链接