1.目录切换/查看
(1)cd 切换目录
cd / 回到根目录
cd ./path 切换到当前目录下的path目录中,“.”表示当前目录
cd ../path 切换到上层目录下的path目录中,“..”表示上一层目录
cd - 切换到上一个操作的目录
cd ~ 回到当前目录用户下
(2)pwd查看路径
pwd // 查看当前目录的路径
pwdx pid // 查看进程所在目录
(3)ll与ls的区别
ll 列出来的结果特别详细,包含时间、是否可读写等信息,像Windows里的详细信息
ls 只列出文件名或目录名 ,就像Windows里的 列表
ll -t // 按照降序显示文件
ll -rt // 按照升序显示文件
ll 文件夹 // 查看某个文件夹内容
ll -a // 显示所有文件包括以 . 开头的隐含文件
ll -m // 横向输出文件名,并以“,” 作为分隔符
ll -k // 以 k 字节的形式表示文件的大小
ll -R // 列出所有文件里面的子目录
2.文件增删改查
(1)新建文件
touch 文件名 // 文件不存在的时候创建文件/文件存在修改时间
touch -m // 改变档案的修改时间记录
vim // 文件名
vi // 文件名
(2)vim和vi的区别
vim可以当做vi的升级版本
- 多级撤销:vi里,按u只能撤销上次命令,在vim里可以无限制的撤销
- 易用性:vi只能运行于Unix中,vim可以运行于unix、Windows、mac等多操作平台
- 语法加量:vim可以用不同的颜色加量代码
- 可视化操作:vim不仅可以在终端运行,还可以运行于x window、mac os、Windows。
(3)新建文件夹
mkdir 文件名 // 创建文件夹
mkdir -p 文件名 // 创建多层文件夹
(4)删除文件
rm 文件名 // 删除文件
rm -rf 路径 // 删除目录以及其下所有文件、文件夹
rm -f 路径 // 只能删除文件,不能删除文件夹
rmdir AAA // 只删除AAA文件夹
rmdir -p BBB/Test // 删除名为Test的子目录。若Test删除后,BBB目录成为空目录,则BBB也删除。
(5)删除的内容如何找回
mkdir -p ~/.Trash
vi ~/.bashrc
source ~/.ba菜单
(6)移动修改文件
mv 文件1 文件2 // 将文件1名称修改成文件2
mv 文件1 路径2 // 将文件1移动到路径2中
mv 路径1 路径2 // 将文件从路径1移动到路劲2下,如果路径2下该文件已存在,则会移动到文件中,如果不存在则移动成功
-i // 当存在相同的会先询问是否覆盖旧文件(逐一询问)
-f // 当存在相同的不会询问是否覆盖旧文件
(7)修改文件名称
rename 文件名1 文件名2 // 将文件1命名为文件2
// rename主要是和正则匹配一起使用
rename 被替换的内容 期待替换的内容 要替换的内容
rename 10 10aa *.log // 将所有的log结尾的文件中10替换成10aa
(8)cat&more&less&tail&head
cat 文件名 // 查看文件的内容(需要注意数据量)
cat-n // 由1开始对所有输出的行数编号
// more
more -num // 一次显示的行数
more +num // 从第num行开始显示
tail // 显示文件内容的最后几行
tail -n 行数 文件名 // 显示文件的最后几行
tail -f 文件名 // 显示文件的后十行内容并在文件内容增加后自动显示增加的文件内容
head // 显示文件内容的前几行
head -n 行数 文件名 // 显示前多少行
head -c 数量 文件名 // 显示前多少节
3.文件查找
find // 查找
find 路径1 -name 内容1 // 在路径1下查找文件名中包含查找内容1的文件
find 路径1 -type 类型C // 在路径1下查找文件类型为C的文件
find的功能很强大,很多都很实用,比如按照时间/大小去查找等
find还有一个比较常用的,查找文件夹中内容包含xxx关键字的文件
find 文件目录 -type f |xargs grep "查询内容";
(1)locate 查找
locate 文件名1 // 可以把文件名1的文件都列出来
locate /ect/sh // 在ect目录下查找以sh开头的文件
locate -i // 忽略大小写的搜索
locate与find的不同:find是去硬盘找,locate只在/var/lib/slocate 资料库中找,速度比find快,它并不是真的查找,而是查数据库,一般文件数据在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库
update db
(2)whereis命令
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
(3)which命令
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜搜结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
4.文件处理
Linux系统中grep命令是一种抢答的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本。
(1)常用的参数
-i // 不区分大小写
-v // 显示不被pattern匹配到的行,取反
-E // 实现多个选项间的逻辑or关系
-c // 统计匹配的行数
-w // 完全匹配
(2)awk 功能比较强大
awk'{print $1}' filename // 打印文件的第一列(域)
awk'{print $1,$2}' filename // 打印文件的前两列(域)
awk 'NR==1{print}' filename // 打印文本第一行
awk可以和grep一起使用,比如
cat sbfjs01_Server.statistics.log |grep -i 'Info'| awk '{print $3}'
(3)wc 统计命令
wc 文件名 // 在默认的情况下,wc将计算指定文件的行数、字数以及字节数
wc -l 文件名 // 显示文件包含多少行
wc -w 文件名 // 显示文件包含多少字数
(4)diff 对比文件
diff 文件1 文件2 // 逐行对比文件1和文件2
(5)split 文件分割
-<行数> // 指定每多少行切成一个小文件
-b<字节> // 指定每多少字节切成一个小文件
5.复制\上传\下载
(1) cp复制
cp 文件名1 文件名2 // 复制文件名1并命名为文件名2
cp -r 文件夹1 文件夹2 //复制文件夹1中的所有子目录文件并且命名为文件夹2
// 另外一些常用的参数
-f // 覆盖已经存在的目标文件而不给出提示
-i // 在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答y时目标文件将被覆盖
(2)scp远程复制
文件复制
$scp local_file remote_username@remote_ip:remote_folder
$scp local_file remote_username@remote_ip:remote_file
$scp local_file remote_ip:remote_folder
$scp local_file remote_ip:remote_file
目录复制
$scp -r local_folder remote_username@remote_ip:remote_folder
$scp -r local_folder remote_ip:remote_folder
注意:
1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用-p参数来设置命令的端口号
scp -p 端口号 用户名@地址:源文件及地址 目标文件及地址
2.使用scp命令要确保使用的用户具有可读取远程服务器相关文件的权限,否则scp命令是无法起作用的
(3)rz
从本地选择文件上传到服务器(receive)
rz 参数 选择的文件 // 将文件上传到服务器
常用的参数:
q --quiet //安静执行,不输出提示信息
-y, --overwrite //存在同名文件则替换
-E, --rename //已存在同名文件则重命名新上传的文件,以点和数字作为后缀
(4)sz
将选定的文件发送(send)到本地机器
sz 参数 文件 // 将文件下载到本地
sz file1 file2 file3 // 下载多个文件
有的机器可能不能使用rz/sz命令,这个时候我们就需要安装lrzsz
yum install lrzsz -y
6.压缩与解压
(1)tar 打包
tar常用的打包可以打包为 .tar / .tar.gz
tar cvf filename.tar dirname
tar zcvf filename.tar.gz dirname
(2)tar 解压
tar xvf filename.tar
tar zxvf filename.tar.gz
可以使用-C解压到指定的目录:
参数含义:
-c或者--create
: 创建新的备份文件
-f<备份文件>或--file=<备份文件>
: 指定备份文件
-v或者--verbose
: 显示指令执行过程
-z或者--gzip或者--ungzip
:通过gzip指令处理备份文件
(3)gzip 压缩程序
文件经过gzip压缩后,其名称后面会多出".gz"的扩展名
gzip a // 压缩a生成一个a.gz的文件,原文件消失(只能压缩文件,不能压缩目录)
gzip -dv a.gz // 解压文件,并列出详细信息
-d或--decompress或--uncompress // 解开压缩文件
-V或--verbose // 显示指令执行过程
(4)gunzip 解压gz文件
gunzip a.gz // 解压a.gz文件
(5)zip 压缩程序
文件经过它压缩后会产生另外具有".zip"扩展名的压缩文件
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-d 从压缩文件内删除指定的文件
zip -r a.zip /a/b: // 将/a/b/目录下所有文件和文件夹打包为当前目录下的a.zip
zip -dv cp.zip a.c // 从压缩文件cp.zip中删除文件a.c
(6)unzip 解压zip文件
unzip a.zip // 解压a.zip文件到当前目录下
unzip -o a.zip -d /tmp // 将a.zip解压到/tmp目录下,覆盖已有文件
unzip -n a.zip -d /tmp // 将a.zip解压到/tmp目录下,不覆盖已有文件
7.权限修改
(1)用户和权限的基本概念
Linux系统中,每个用户的角色和权限划分的很细致也很严格,每个文件(目录)都设有访问许可权限,利用这种机制来决定某个用户通过某种方式对文件(目录)进行读、写、执行等操作。
操作文件或目录的用户,有三种不同类型:文件所有者、群组用户、其他用户。
权限 | 对应数字 | 意义 |
---|---|---|
r | 4 | 可读 |
w | 2 | 可写 |
x | 1 | 可执行 |
(2)默认权限的问题
我们在Linux系统中新建一个文件或者目录,那么这个文件或目录会有一个权限,这个权限就是默认权限,查看默认权限umask
umask(权限掩码)就是指定当前用户在建立文件或目录的时候的权限默认值。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次登录系统时,umask命令都被执行
第一位表示特殊权限位
后三位表示默认权限位,如002
002如何标识默认权限?
文件创建不默认赋予执行权限,最大权限是666
默认权限要换算成对应的字母权限在相减而不是数字,监理文件或目录之后的默认权限,为666减去umask的值
666-002=664
(3)chmod 修改权限
chmod 权限 文件
// 修改某个文件的用户权限
chmod 765 文件
可以解释为:
所有者的权限:属主的那三个权限位的数字加起来的总和,如4+2+1,应该是7
用户组的权限:属组的那个权限位数字相加的总和,如rw- 也就是 4+2+0,应该是6
其他用户的权限:其他用户权限位的数字相加的总和,如r-x 也就是4+0+1,应该是5
(4)chown 修改文件所有者和组
chown test123:test123 abc
可以解释为:
将abc所属者和用户组都改成test123
注:需要超级用户root的权限才能执行此命令
(5)su & sudo
su
变更为其他使用者的身份,除root外,需要键入该使用者的密码
查看当前用户:whoam
切换到root用户:su root
// 需要知道这个用户的密码
sudo
以系统管理者的身份执行命令
使用权限:在/etc/sudoers中出现的使用者
sudo -u root ls -l
// 指定用户root执行命令
区别:sudo相对安全
如果主机上有多个用户并且不知道root用户的密码,但又想查看某些他们看不到的文件,不用把root密码全告诉他们,只需要管理员授权就可以了。
8.负载/内存/磁盘
(1)top
通俗来说,Linux中的top命令就像是Windows中的任务管理器。它会以列表的形式展示出系统的当前状态以及进程信息,并且定时刷新,同时也支持一些交互性的操作:
第一行:概况
第二行:进程计数
第三行:CPU的使用率
第四行/第五行:物理内存和交换空间
最后一部分:进程详细信息
直接输入top:动态显示top信息
q:退出top
N:按PID对进程排序
M:按%MEM对进程排序
P:按%CPU对进程排序
显示每个线程的情况:top -Hp pid
(2)du & df
du 显示指定的目录或文件所占用的磁盘空间
-s 或 --summarize // 仅显示总计
-h 或 --human-readable // 以K,M,G为单位,提高信息的可读性
du -sh 文件 // 显示文件占用的磁盘大小
df 显示目前在Linux系统上的文件系统磁盘使用情况统计
-h,--human-readable // 使用人类可读的格式(预设值是不加这个选项)
df -h // 显示当前系统的使用情况
du和df的区别
du:disk usage,是通过搜索文件来计算每个文件的大小,然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是,当前他认为存在的所有文件大小的累加和。
df:disk free,通过文件系统来快速获取空间大小的信息。当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件。df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分也加上了,更精确了。
9.定时任务
(1)crontab
crontab:循环运行的例行计划任务,linux系统则是由cron(crond)这个系统服务来控制的,提供了使用者控制计划任务的命令:
/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
crontab的含义:
每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
minute:表示分钟,可以是0~59之间的任何整数
hour:表示小时,0~23之间的任何整数
day:表示日期,1~31之间的任何整数
month:表示月份,1~12之间的任何整数
week:表示星期几,0~7之间的任何整数,这里的0和7代表星期日
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
特殊字符含义:
星号* :代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号,:可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠- :可以用整数之间的中杠表示一个整数范围,例如“2-”表示“2,3,4,56”
正斜线/ :可以用正斜线指定时间的间隔频率,例如“-232”表示每两小时执行-次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次
示例:
*****command 每1分钟执行一次command
3,15****command 每小时的第三/第十五分钟执行一次
3,15 8-11 */2 ** command 每隔两天的上午8点到11点的第3和第15分钟执行
0 23 ** 6 command 每周六晚上的11:00执行
0 11 4 * 1-3 command 每月的四号每周一到周三的十一点整执行一次
10.其他常用
(1)ps 用于显示当前进程的状态,类似于Windows的任务管理器
ps的参数非常多,常用的命令有:
-ef 显示所有进程
aux 显示所有进程
查找指定进程
ps -ef | grep 进程关键字
ps aux | grep 进程关键字
也可以使用!ps进行省略
(2)pstack 用来显示进程的栈跟踪
一般比如说程序卡住了,僵死掉了,我们需要保存一些信息给开发查看一下
pstack pid >> 指定文件 (>替换原来的文件 >>追加)
(3)kill 杀死进程
kill -l 查看所有的方法
-9 传递给进程的信号是9,即强制、尽快终止进程
kill -9 pid 强制杀死该进程
kill -9 $9(ps -ef | grep hnlinux) //方法一 过滤出linux用户进程
kill -u hnlinux //方法二 杀死hnlinux用户的进程
(4)telent & netstat & ssh
telent用于远端登录
telent ip/域名 端口 // 查看远程ip的端口是否开发,确认程序有没有起来
netstat
netstat -anlp | grep '端口号' //如果发现程序起不来,查看端口是否被监听和占用
ssh 远程登陆(默认22的端口)
ssh -p 22 用户名@host 进行远程登陆 (端口默认22可省略)
ssh -p 22 weblogic@ 10.199.136.34
(5)date & history
date
显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式
date +%Y%m%d // 年月日的格式显示当前时间
date -s YYYY-MM-DD hh:mm[:ss] // 修改日期和时间
同步网络时间(安装ntpd)
ntpdate 192.168.0.1 // 制性的将系统时间设置为ntp服务器时间
history
记录执行过的命令
直接history 回车 查看
history [n] n为数字,列出最近的n条命令