一、vi
编辑文件命令:
vi hello.java
打开文件hello.java
i
键进入编辑模式
Esc
退出编辑模式,回到命令模式
:wq
保存文件并退出vi
:q
不保存文件,退出vi
:q!
不保存文件,强制退出vi
在命令模式下:
yy
拷贝文件中当前行并粘贴,5yy
拷贝文件中光标后的5行并粘贴
dd
删除文件中当前行,5dd
删除文件中光标后的5行
/hello
在文件中查找hello关键字,输入n
找到下一个匹配到的关键字hello
:set nu
显示文件行号
:set nonu
取消文件行号
G
移动光标到文件最后一行
gg
移动光标到文件第一行
u
撤销操作
把光标移动到第20行,需要3步:
1、:set nu
显示文件行号
2、输入20
3、快捷键shift+g
二、关机重启注销:
shutdown -h now
立即关机
shutdown -h 1
1分钟后关机
shutdown -r now
立即重启
halt
关机
reboot
重启系统
sync
把内存的数据同步到磁盘。建议关机前先执行以下
登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用su - root
命令来切换成管理员身份。
logout
注销
三、用户管理:
useradd lizq
添加用户lizq,没有指定用户主目录时,会自动在home下创建同用户同名的目录
useradd -d /home/dog xiaoq
添加用户xiaoq,并指定/home/dog作为用户xiaoq的主目录
passwd lizq
给用户lizq设置密码
用不同用户登录,系统会自动切换到该用户的主目录。如:lizq登录就在/home/lizq下;xiaoq登录就在/home/dog下
userdel lizq
删除用户lizq,保留用户主目录
userdel -r lizq
删除用户lizq,并删除用户主目录
实际开发中,只删除用户,不会删除用户主目录
su - root
切换到root用户。从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
exit
退出当前用户。
id lizq
查看用户lizq。若没有该用户会提示无此用户
groupadd wudang
创建用户组wudang
useradd -g wudang zwj
创建用户zwj,并指定到用户组wudang
usermod -g shaolin zwj
修改用户zwj的用户组为shaolin
groupdel wudang
删除用户组wudang
chown lizq a.txt
把文件a.txt的所有者修改为lizq
chown -R lizq /home
把目录home下的所有文件和目录的所有者都修改为lizq
chgrp wudang a.txt
把文件a.txt所在组修改为wudang
chgrp -R wudang /home
把目录home下的所有文件和目录的所在组修改为wudang
/etc/passwd文件:用户的配置文件,记录用户的各种信息
/etc/shadow文件:口令的配置文件
/etc/group文件:组的配置文件,记录Linux包含的组的信息
四、实用指令
init 3
指定运行级别为3多用户有网络服务
man ls
查看ls命令的使用方法
help cd
查看cd命令的使用方法
pwd
显示当前工作目录的绝对路径
ls -a
显示当前目录所有的文件和目录,包括隐藏的
ls -l
以列表的方式显示信息
ls -ahl
a显示隐藏的文件,l显示详细列表模式,h显示大小便于查看
cd /home
切换到home目录下
cd ~或cd
回到用户主目录
cd..
回到当前目录的上一级目录
mkdir /home/tiger
在home目录下创建tiger目录
mkdir -p /home/animal/dog
创建多级目录。在home目录下创建animal目录,然后在animal目录下创建dog目录
rmdir /home/tiger
删除空目录tiger。rmdir只能删除空目录
rmdir -rf /home/tiger
删除非空目录tiger
touch hello.java
创建空文件hello.java
touch hello.java hello.txt
创建多个空文件hello.java和hello.txt
cp hello.txt bbb
拷贝文件hello.txt到指定目录bbb
cp -r aaa bbb
拷贝目录aaa到指定目录bbb
rm hello.txt
删除文件hello.txt
rm -f hello.java
删除文件hello.java,不提示
rm -rf aaa
强制删除目录aaa
mv
移动文件与目录或重命名
mv aaa.txt pig.txt
把文件aaa.txt重命名为pig.txt
mv pig.txt /root
把文件pig.txt移动到root目录下
cat pig.txt
以只读的方式查看文件pig.txt内容
cat -n /etc/profile | more
分页查看/etc/profile文件,并显示行号
more /etc/profile
分页查看/etc/profile文件
空格键(space):向下翻一页;
Enter:向下翻一行;
q:退出more;
Ctrl+F:向下滚动一屏;
Ctrl+B:返回上一屏;
=:输出当前行的行号
:f :输出文件名和当前行的行号
less /etc/profile
分屏查看/etc/profile文件。不是一次性将整个文件全部加载显示,而是根据显示需要加载内容
空格键(space):向下翻一页;
Page Down:向下翻一页;
Page Up:向上翻一页;
/字符:向下搜寻[字符]的功能;n:向下查找;N:向上查找;
?字符:向上搜寻[字符]的功能;n:向上查找;N:向下查找;
q:退出less;
>
指令和>>
指令:
>
输出重定向:会将原来的文件的内容覆盖
>>
追加:不会覆盖原来文件的内容,而是追加到文件的尾部
ls -l > a.txt
把ls -l
显示的内容写入到文件a.txt中。a.txt存在则覆盖原内容,不存在则创建a.txt文件
ls -l >> b.txt
把ls -l
显示的内容追加到文件b.txt中。不会覆盖原内容
cat a.txt > b.txt
把文件a.txt的内容覆盖到b.txt中
echo "hello world!" > a.txt
用输出的hello world!覆盖文件a.txt中的内容
echo "hello world!" >> a.txt
把输出的hello world!追加到文件b.txt中
echo "hello world!"
输出字符串"hello world!"
echo $PATH
输出环境变量路径
head a.txt
显示文件a.txt的开头部分前10行的内容
head -n 5 a.txt
显示文件a.txt的开头部分前5行的内容
tail a.txt
显示文件a.txt的末尾部分后10行的内容
tail -n 5 a.txt
显示文件a.txt的末尾部分后5行的内容
tail -f a.txt
实时追踪该文件a.txt的所有更新。在工作中经常使用
ln -s /root linkToRoot
创建软连接linkToRoot指向root目录
rm -rf linkToRoot
删除软连接linkToRoot
history
查看执行过的命令
history 10
查看最近执行的10个命令
!10
执行hostory
查询到的历史命令编号为10的命令
date
显示当前时间
date +%Y
显示当前哪一年
date +%m
显示当前哪一月
date +%d
显示当前哪一天
date "+%Y-%m-%d"
显示当前时间的年月日
date "+%Y-%m-%d %H:%M:%S"
显示当前时间的年月日时分秒
date -s "2018-10-10 11:22:28"
设置当前时间为2018-10-10 11:22:28
cal
显示当前日历
cal 2020
显示2020年日历
find /home -name hello.txt
按文件名,在home目录下查找文件hello.txt
find /opt -user nobody
按拥有者,在opt目录下查找文件nobody
find / -size +20M
查找大于20M的文件
find / -size -20M
查找小于20M的文件
find / -size 20M
查找等于20M的文件
find / -name *.txt
查找根目录下,所有的.txt文件
locate hello.txt
快速定位hello.txt的位置。第一次使用时必须先使用updatedb
指令创建locate数据库
cat hello.txt | grep yes
在hello.txt文件中查找yes
cat hello.txt | grep -n yes
在hello.txt文件中查找yes,并显示行号
cat hello.txt | grep -i yes
在hello.txt文件中查找yes,忽略大小写
cat hello.txt | grep -ni yes
在hello.txt文件中查找yes,忽略大小写,并显示行号
管道符号:|,表示将前一个命令的处理结果输出传递给后面的命令处理
zip
压缩文件,unzip
解压文件
zip -r mypackage.zip /home
将home下的所有文件压缩为mypackage.zip
unzip -d /opt/tmp mypackage.zip
把压缩包mypackage.zip解压到/opt/tmp下
tar -zcvf a.tar a.txt b.txt
把文件a.txt和b.txt打包为a.tar
tar -zcvf a.tar /home
把home目录下所有文件打包为a.tar
tar -zxvf a.tar
把压缩包a.tar解压到当前目录
tar -zxvf a.tar -c /opt
把压缩包a.tar解压到opt目录下。指定解压到的目录必须事先存在
五、权限管理
0-9位说明 :
(1)、第0位确定文件类型(d, - , l , c , b)
(2)、第1-3位确定该文件的所有者拥有的权限
(3)、第4-6位确定所属组拥有该文件的权限
(4)、第7-9位确定其他用户拥有该文件的权限
rwx权限详解:
rwx作用到文件:
(1)、 r 代表可读(read): 可以读取,查看
(2)、 w 代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
(3)、 x 代表可执行(execute):可以被执行
rwx作用到目录:
(1)、r代表可读(read): 可以读取,ls查看目录内容
(2)、w 代表可写(write): 可以修改,可以在目录内创建目录,删除目录,重命名目录
(3)、x 代表可执行(execute):可以进入该目录
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
第一个字符代表文件类型:文件(-
),目录(d
),链接(l
)
其余字符每3个一组(rwx) 读(r
) 写(w
) 执行(x
)
第一组rwx : 文件拥有者的权限是读、写和执行
第二组rw-: 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
1 文件数、硬连接数或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096字节 ,代表文件夹大小
Feb 2 09:39 最后修改日期
abc 文件名
chomd修改权限:
第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人
(1)、chmod u=rwx,g=rx,o=x 文件目录名
(2)、chmod o+w 文件目录名
(3)、chmod a-x 文件目录名
第二种方式:用数字代表权限 r=4 w=2 x=1,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
六、定时任务
crontab
进行定时任务的设置
案例:
设置个人任务调度,执行crontab –e
命令。 接着输入任务到调度文件,如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令
conrtab –r
终止任务调度
crontab –l
列出当前有那些任务调度
service crond restart
重启任务调度
七、磁盘情况查询
df -lh
查询系统整体磁盘使用情况
du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
八、进程管理
ps -a
显示当前终端的所有进程信息
ps -u
以用户的格式显示进程信息
ps -x
显示后台进程运行的参数
ps -aux|grep java
查看java进程
指令说明:
• USER:用户名称
• PID:进程号
• %CPU:进程占用CPU的百分比
• %MEM:进程占用物理内存的百分比
• VSZ:进程占用的虚拟内存大小(单位:KB)
• RSS:进程占用的物理内存大小(单位:KB)
• TTY:终端名称
• STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通 优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止
• START:进程的启动时间
• TIME:CPU时间,即进程使用CPU的总时间
• COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
ps -ef|grep java
以全格式显示java进程,并查看java进程的父进程。
指令说明:
• UID:用户ID
• PID:进程ID
• PPID:父进程ID
• C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算, 执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
• STIME:进程启动的时间
• TTY:完整的终端名称
• TIME:CPU时间 ,即进程使用CPU的总时间
• CMD:启动进程所用的命令和参数
kill 进程号
根据进程号杀死进程
killall 进程名称
根据进程名称杀死进程
kill -9 进程号
根据进程号强制杀死进程
九、服务管理
systemctl start firewalld
启动防火墙
systemctl stop firewalld
关闭防火墙
systemctl status firewalld
查看防火墙状态
systemctl disable firewalld
开机禁用防火墙
systemctl enable firewalld
开机启用防火墙
top [选项]
监视特定用户:输入top命令,按回车键,查看执行的进程。然后输入u回车,再输入用户名
终止指定的进程。 输入top命令,按回车键,查看执行的进程。然后输入k回车,再输入要结束的进程
netstat [选项]
选项:
-an:按一定顺序排列输出
-p:显示哪个进程在调用
十、软件包的管理
rpm –qa|grep java
查询有没有安装java的rpm软件包
rpm -qa
或rpm -qa | more
查询所安装的所有rpm软件包
rpm -qi java
查询安装的java的rpm软件包的版本信息
rpm -ql java
查看安装的java的rpm软件包在哪个目录
rpm -e java
删除安装的java的rpm软件包
yum list|grep java
查看yum服务器有没有java的安装包
yum search
查找软件包
yum install
安装软件包
yum list installed
显示已安装的软件包
yum remove
删除软件包
十一、其他命令
uptime
系统运行负载情况
free
显示内存的使用情况
uname
查看系统信息
hostname
查看主机名
who
显示当前已登录的用户信息
whoami
当前登录是谁
clear
清除屏幕
ifconfig
查看系统ip
ping
测试某个地址是否可以连通
十二、常用快捷键
Tab
命令自动补齐或显示可选项
Ctrl+c
终止当前进程
Ctrl+d
关闭终端
Ctrl+Insert
复制命令
Shift+Insert
粘贴命令