Linux笔记
1. 未分类命令
可以在终端中用
Ctrl + l组合键进行清屏,或者使用clear命令
重启/关机命令:
reboot:立刻重启halt:立刻关机shutdown -r now:立刻重启(-r参数代表reboot)shutdown -h now:立刻关机(-h参数代表halt)shutdown -h 1 '系统将于一分钟后关机':给所有终端发送一条警告信息,然后一分钟后关机shutdown:默认一分钟后关机sync:将内存中的数据同步到磁盘中;Linux在重启或关机前都会执行该命令(但最好还是手动执行一下)
登录/注销命令:
su - {username}:切换成指定用户登录(横杠可以省略?)exit、logout:注销登录,退回到上一个用户;如果没有上一个用户,则关闭终端
如果是Ubuntu系统,那么在切换到根用户前需要先为根用户设置密码(使用
sudo passwd [root]命令)
ssh {user}@{ip}:
- 用指定的用户远程登录到指定的主机上
- 如果访问出错,则可以尝试删除
~/.ssh/known_ssh文件
运行级别:
- 0:关机
- 1:单用户状态;有root权限,用于系统维护,禁止远程登录;也可以用来找回根用户密码
- 2:多用户状态,但没有网络服务
- 3:多用户状态,且有网络服务(常用)
- 4:该级别为保留级别,暂未使用
- 5:图形界面(常用)
- 6:系统重启
init {level}:切换到指定运行级别,比如init 6命令会让Linux重启systemctl get-default:查看默认运行级别;graphical.target代表级别5systemctl set-default {xxx.target}:设置默认运行级别,如设置成multi-user.target(级别3)- 注意,不能将默认运行级别设置成0或6
帮助命令:
man {cmd}:查看指定命令的用户手册;空格键下一页,b键上一页,q键退出help {cmd}、info {cmd}:和上面的类似
echo {text}:
- 打印指定文本(即
text) - 如果文本中包含空格等特殊字符,则最好用引号包起来,如:
echo 'hello world!' - 还可以打印环境变量,比如
echo $HOSTNAME会把主机名称打印出来,类似的还有echo $PATH - 还可以打印其它命令的执行结果,执行的命令用反引号包起来,比如
echo `pwd`的效果和pwd是一样的
history [num]:
- 查看已经执行过的命令
- 可以通过
num参数来指定只显示最后num个命令 !num命令可以用于执行历史记录中的第num条命令
crontab [-uelr]:
- 和定时任务相关的命令,后台进程为
crond -u:用于指定目标用户;如果不指定,则默认为当前用户-e:用vim编辑器来编辑用户的定时任务文件;文件的每一行(cron表达式 + 命令或脚本文件)代表一个定时任务-l:查询用户所有的定时任务-r:删除用户的定时任务文件- 功能类似的还有
at命令,用于执行一次性的定时任务(atq查询任务队列,atrm {num}删除指定编号的任务)
2. 文件(夹)命令
ls [-alhR] [dir]:
- 默认用平铺的方式展示指定目录(即
dir)下的所有可见的文件和文件夹 - 文件夹用深色(如蓝色)表示,普通文件用浅色(如白色)表示,可执行文件用绿色表示
- 当不指定
dir时,默认取当前所在的目录(即工作目录) -a(即all):加了该参数后,会把隐藏的文件和文件夹(名称以.开头)也展示出来-l(即list):以列表的方式来展示,同时还会展示出文件和文件夹的更多信息(如大小,单位为字节)-h(即human):配合-l选项使用,会将文件和文件夹的大小用人性化的方式展示,比如一千字节会用1kb展示-R:对文件夹中的子文件夹也执行ls命令并展示其结果(递归)
当打开终端后,会将当前用户的家目录(即
/home/{username},用~表示)作为工作目录
tree {dir}:
- 以树状方式展示指定文件夹及其内部的所有文件和文件夹内容
cd [dir]:
Change Directory的缩写;将工作目录更改为指定目录(即dir)- 当不指定
dir时,默认切换到当前用户的家目录,也就是说,cd和cd ~的效果是一样的 - 可以通过绝对路径(以
/开头)或相对路径(不以/开头,此时的参照路径为当前目录)来指定目标目录 .代表当前目录,也就是说,cd a和cd ./a的效果是一样的..代表上一级目录,可以通过cd ../..连退两级目录
cd ~/desktop可以直接切换到当前用户的家目录下的桌面文件夹
pwd:
Print Work Directory的缩写,打印出当前的工作目录的绝对路径
mkdir [-p] {dir}:
Make Directory的缩写,创建指定目录(即dir)- 这里的目录也支持绝对路径和相对路径,并且也可以使用
..和~等特殊路径符 -p:(即parent):加了该参数后,会自动创建不存在的父目录,适用于创建多层级的目录
rmdir {dir}:
Remove Directory的缩写,删除指定目录(即dir);注意只能删除空目录
touch {path}:
- 用于创建指定名称的空文件
- 如果文件已存在,则会修改该文件的时间戳
cat [-n] {path}:
- 查看指定名称的文件,会直接将文件的所有内容展示出来
-n:加上该参数后,会显示行号
more {path}:
- 查看指定名称的文件,分页展示文件内容;是基于vi编辑器的文本过滤器
- 空格键下一页,
b键上一页,q键退出,回车键下一行,=键显示当前页最后一行的行号 - 也可以直接用鼠标滚轮进行翻阅
less {path}:
- 和
more命令类似,但功能更强大;more命令能用的快捷键,less命令也能用 - 会根据显示需要来加载文件内容(而不是直接读取文件全部内容),因此适合用于查看大文件
- 输入
/或?,可以进行字符串搜索(分别是向下和向上搜索);搜索时,n是正方向找下一个,N是反方向找下一个
head/tail [-nf] {path}:
- 查看指定文件的最开始/最末尾的若干行数据;默认显示10行
-n:用于指定查看几行数据,比如head -n 5 xxx只会显示前5行,还可以简写成head -5 xxx-f:tail命令才有的参数,会阻塞等待文件内容的变化(当文件末尾新增了一行时,会立刻打印这一行数据)
cut [-fdc] {path}:
- 对指定文件中的每一行内容进行裁剪,并输出裁剪结果
-c:用于指定要输出第几个字符,比如cut -c 1 xxx会将文件中每一行的第一个字符打印出来-d:用于指定要根据什么分隔符进行分割-f:需配合-d使用;用于指定要输出分割后的第几列(下标从1开始算)- 比如,
cut -d '/' -f 1 xxx就代表将文件中每一行的第一个/之前的数据打印出来
sort [-utknr] {path}:
- 以行为单位对指定文件中的所有行进行排序
-u:排序完成后进行去重-t/-k:和cut的-d/-f类似,用于指定如何分割,并根据分割后的第几列(可以有多个)来进行排序- 比如,
sort -t '/' -k 3,4 xxx就代表先根据/进行切分,然后根据第3和第4列的值对这些行进行排序 -n:将排序的列当作数字(而不是字符)来进行比较,避免出现10小于2的情况-r:倒序排序(从大到小)
uniq [-cdu] {path}:
- 以行为单位对指定文件中的所有行进行去重;需要有序,因此一般配合
sort命令使用 -c:显示出现的次数-d/-u:只显示出现多次/只出现一次的行
awk [-F] {script} {path}:
- 先对指定文件中的所有行进行分割,然后将分割后的行交给指定脚本进行处理
-F:用于指定分隔符,默认为空格或制表符;支持正则表达式awk -F '/' '{print $3}' xxx命令和cut -d '/' -f 3 xxx类似
cp [-r] {src} {tar}:
Copy的缩写,将源文件或文件夹(即src)复制为目标文件或文件夹(即tar)-r(即recursive):在复制文件夹时使用,会对文件夹中的内容进行复制,否则会报错(复制空文件夹也得加该参数)- 比如,
cp 1.txt a/2.txt会对1.txt文件进行复制,复制后的文件名称为2.txt,且会放到a文件夹中 - 比如,
cp -r a d会对a文件夹及其内容进行复制,复制后的文件夹名称为d,且还是放到当前目录中 - 注意,如果
tar是个已存在的文件夹,则会将src复制到tar文件夹中 - 当复制后的文件和已有文件冲突时:如果是根用户,则会提示是否覆盖,否则会直接进行覆盖
对于根用户,如果复制时冲突比较多,且不想一个一个确认的话,则可以用
\cp命令直接覆盖所有冲突的文件
rm [-rf] {name}:
Remove的缩写,用于删除文件或文件夹-r:删除文件夹时使用,递归删除文件夹中的所有内容-f(即force):强制删除,不用提示是否删除
mv {from} {to}:
Move的缩写,移动文件或文件夹,也可以对文件或文件夹进行重命名,或者在移动的同时顺便进行重命名- 相当于先复制源文件(夹),然后再删除源文件(夹),因此和
cp命令类似 - 注意,在移动文件夹时,无需指定
-r参数
ln -s {src} {name}:
- 为指定文件或文件夹(即
src)创建指定名称(即name,可以带有路径)的软链接(相当于快捷方式) - 如果要删除软链接,则可以用
rm命令;cp等命令也可以用于操作软链接
basename {file} [suffix]
- 获取某个文件的文件名称,不包含路径信息;也就是获取最后一个
/后面的内容;文件可以不存在 - 比如,
basename /root/abc/1.txt会打印1.txt - 如果指定了后缀
suffix,则会去掉文件名称中的该后缀 - 比如,
basename /root/abc/1.txt .txt会打印1
dirname {file}
- 获取某个文件所在的文件夹,也就是获取最后一个
/前面的内容
3. 特殊命令、时间命令
|:
- 管道命令,将前面命令的输出内容交给后面的命令来处理
- 我们知道,
cat命令能显示行号,但不能分页;而more命令能分页,却不支持显示行号 - 此时可以用管道命令将这两个命令连接起来,先用
cat命令显示行号,再交给more命令分页:cat -n xxx | more
>:
- 重定向命令,将前面命令的输出内容转移到目标文件中(覆盖)
- 比如,
echo abc > 1.txt会将1.txt文件中的内容覆盖为abc - 比如,
cat 1.txt > 2.txt会将1.txt文件中的内容复制到2.txt文件中并覆盖原先的内容 - 如果目标文件不存在,则会自动创建
>>:
- 重定向命令,将前面命令的输出内容转移到目标文件中(追加)
- 比如,
echo abc >> 1.txt会将abc追加到1.txt文件末尾
cal [year]:
- 如果不指定年份,则打印当前月份的日历
- 否则,打印指定年份12个月的日历
date [-s] [format/str]:
- 打印当前时间或设置日期
- 可以通过
format指定打印的格式,如:date '+%Y-%m-%d %H:%M:%S'(加号是必须的,%Y等代表占位符) - 当添加了
-s参数时,代表设置日期,此时可以通过str来指定目标日期,如:date -s '2000-01-01 00:00:00'
4. 搜索命令、压缩命令
find {dir} {-name|-user|-size|-atime|-mtime|-ctime} {param} [-exec xxx ;]:
- 在指定目录(包括其子目录)中查找满足要求的所有文件
-name:根据名称查找,可以使用*通配符(代表若干个字符),如:find / -name '*.txt'-user:查找属于指定用户的文件,用户名称不支持通配符,必须是个确定的名称-size:查找大于/等于/小于指定大小的文件;+1M、1k、-1G分别代表大于1M、等于1k、小于1G-atime|-mtime|-ctime:根据最近访问时间/最近修改时间/创建时间进行查找;+n代表超过n天,-n代表n天内-exec:该参数可以用于指定一条命令,这条命令会对所有查询到的文件生效;该命令需要用分号结尾,且分号需要转义
删除某个目录下的10天前创建的文件:
find {dir} -ctime +10 -exec rm -rf {} ;
locate {name}:
- 查找指定名称的文件
- 本命令是通过索引来进行查找的,因此效率很高
- 但是在执行本命令前,需要先执行
updatedb命令更新索引,确保查找结果正确
which {cmd}:
- 查看指定的命令对应的程序,比如
ls命令对应的程序是/usr/bin/ls
grep [-niv] {text} {file}:
- 在指定文件(即
file)中查找包含指定文本(即text)的行,支持正则表达式 -i:不区分大小写-n:显示行号-v:反向查找,即查找出不包含指定文本的行- 一般配合管道命令使用,如:
cat 1.txt | grep -n 'a'
命令的综合应用:可以通过
ls -l xxx | grep '^-' | wc -l命令来统计某个目录下普通文件的个数
wc [-cmwl] {file}:
- 统计指定文件中的字节数量(
-c)、字符数量(-m)、单词数(-w)、行数(-l) - 如果不带任何参数,则显示行数、单词数、字节数量
- 如果只指定了
-c参数,则只显示字节数量;其它的同理
gzip/gunzip {file}:
gzip可以对指定文件进行压缩,压缩文件名称为源文件名称后面拼上.gz后缀;源文件会被压缩文件替换gunzip可以对指定压缩文件进行解压,解压后的文件名称为源文件名称去掉.gz后缀;压缩文件会被解压后的文件替换
zip [-r] {tar} {src}:
- 用于压缩指定文件或文件夹(即
src),压缩后的文件名称为tar -r:代表压缩文件夹及其所有内容
unzip [-d xxx] {src}:
- 用于将压缩文件(即
src)解压为文件或文件夹 -d:用于指定要解压到哪个目录,默认解压到当前目录
tar:
- 打包压缩文件或文件夹,也可以用于解压文件;压缩文件类型为
.tar.gz -c:压缩时使用,代表打包成.tar文件-x:解压时使用,代表对.tar文件进行解包-z:代表需要进行压缩或解压-v:显示详细信息-f:用于指定要打包的文件或文件夹,或要解压的压缩文件-C:用于指定要解压到的位置(默认解压到当前目录)- 对多个文件进行压缩:
tar -zcvf xxx.tar.gz 1.txt 2.txt - 将压缩文件解压到指定目录:
tar -zxvf xxx.tar.gz -C target/
5. 用户(组)
用户管理:
useradd {username}:添加一个用户,但可能不会自动创建家目录(默认为/home/{username},也可通过-d参数指定)passwd {username}:为指定用户设置密码;如果不指定用户,则为当前用户设置密码userdel {username}:删除指定用户,但不删除其家目录;如果要删除其家目录,则可以添加-r参数(慎用)id {username}:查看指定用户的信息,比如用户id、所在组的id、所在的组的名称whoami:查看当前用户的名称who am i:查看当前会话中第一次登录的用户及ip等信息
根用户的家目录为
/root,非根用户的家目录默认为/home/{username}
用户组管理:
groupadd {groupname}:添加一个用户组groupdel {groupname}:删除指定用户组useradd -g {groupname} {username}:创建用户并指定用户组usermod -g {groupname} {username}:更新指定用户的用户组usermod -d {directory} {username}:更新指定用户的家目录- 每个用户都必须有且仅有一个用户组;如果创建用户时没有指定用户组,则会为该用户创建一个同名的用户组
用户信息文件:
/etc/passwd:用户信息,格式为用户名:密码(一般不可见):用户id:用户所在组的id:注释性描述:主目录:使用的Shell/etc/shadow:密码信息,格式为用户名:加密后的密码:最后修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志/etc/group:用户组信息,格式为组名:密码(一般不可见):组id:组内的用户名称(一般不可见)
Shell其实就是命令的翻译器,用户输入的命令必须经过Shell的翻译后才能被Linux识别
Linux上,一切皆文件;每个文件都会有所有者、所在组、其它组的概念:
- 文件的创建者默认就是该文件的所有者,但也可以更改文件的所有者
- 文件的创建者所在的组默认就是该文件的所在组,但所有者的变动或所有者所在组的变动不会影响到文件的所在组
- 除了所有者和所在组中的所有用户之外,其它用户都属于其它组
- 更改文件(夹)的所有者:
chown {user} {file} - 更改文件(夹)的所在组:
chgrp {group} {file}
在执行ls -l命令时,文件信息的展示方式大致为drwxr-xr-x 1 root root 4096 Oct 18 16:33 home:
drwxr-xr-x:代表这个文件的访问权限信息,后文细说1:对普通文件来说,该数字代表硬链接数;对文件夹来说,该数字代表子目录数(包括.和..两个特殊目录)?root:该文件的所有者root:该文件的所在组4096:该文件的大小(单位:字节)Oct 18 16:33:该文件的最后修改时间home:该文件的名称
访问权限信息共有10位,其中:
- 第0位代表文件类型,
-、d、l、c、b分别代表普通文件、文件夹、软链接、字符设备(比如键盘)、块设备(比如硬盘) - 第1-3位代表所有者的权限,
rwx代表有读、写、执行的权限(也可用数字7表示) - 第4-6位代表所在组的权限,
r-x代表有读、执行的权限(也可用数字5表示) - 第7-9位代表其他组的权限,
--x代表有执行权限(也可用数字1表示) - 这三种权限对文件和文件夹来说的含义是不同的
| 文件 | 文件夹 | |
|---|---|---|
| r | 可以读取文件内容,如cat | 可以查看文件夹的内容,如ls |
| w | 可以修改文件名和文件内容,但不一定能删除该文件 | 可以修改文件夹名,或在文件夹中新增、删除文件 |
| x | 可以执行该文件 | 可以进入该文件夹,如cd |
chmod {setting} {file}:
- 用于更改文件的所有者(
u)、所在组(g)、其它组(o)、所有用户(a)的权限 chmod u=rwx,g=rx,o=x 1.txt代表将指定文件的权限更改为所有者可读写执行、所在组可读执行、其它组可执行chmod o+r+w,a-x 1.txt代表给指定文件的其它组新增读写权限、给所有用户去掉执行权限- 也可以直接用数字来表示权限组合,比如
chmod 751 1.txt等价于chmod u=rwx,g=rx,o=x 1.txt
chown [-R] {user}:{group} {file}:
- 更改某个文件的所有者和所在组;所有者和所在组不需要同时指定
- 当只指定所有者时,就只更改所有者,此时冒号可以省略,如
chown user 1.txt - 当只指定所在组时,就只更改所在组,此时冒号不能省略,如
chown :group 1.txt -R:当修改的是文件夹,并且想同时更改文件夹中的所有文件(夹)的所有者和所在组,则需要加该参数(chgrp命令同理)- 更改了所有者和所在组之后,涉及到的用户需要重新登录才会刷新对该文件的权限
6. 磁盘、网络
磁盘分区概述:
- Linux会将磁盘划分成一个或多个分区(分区大小可以不一样),并以分区为单位来使用磁盘
- 我们在创建CentOS虚拟机时,就会接触到磁盘的自动分区和手动分区
在手动分区时,一般会用如下方式来划分磁盘(假设大小为20G):
/boot分区:引导分区,1G,文件系统为ext4swap分区:交换分区,大小与内存大小保持一致即可,相当于虚拟内存?文件系统为swap/:根分区,占用磁盘剩余的空间,文件系统为ext4;用于存放根目录中的所有内容
挂载(mount,/mnt目录就与挂载相关):
- 由于根分区存放了根目录的所有数据,因此,我们称根分区挂载到了根目录上
- 我们也可以把其它磁盘分区挂载到根目录的某个子目录上,这样,该目录的数据就会存放到该分区上,而不是根分区上
- 如果某个分区原先挂载到了A目录,后来挂载到B目录,那么就相当于将A目录的所有数据覆盖到了B目录中?
- 访问某个目录,其实就是在读取挂载到该目录上的那个分区上的数据
lsblk [-f]:
- 查看磁盘分区挂载信息
- 硬盘可分为IDE硬盘(
hd)和SCSI硬盘(sd),目前基本上用的都是后者 - 硬盘名称为
hdx或sdx,其中x代表盘号(a:基本盘;b:基本从属盘;c:辅助盘;d:辅助从属盘) - 而分区名称为硬盘名称 + 分区编号,比如
sda1、hdb2等 -f:加上该参数后,可以查看分区的文件系统类型和UUID(分区在格式化后才会被分配一个UUID)
实战:新增硬盘并划分成一个分区,然后将其挂载到/newdisk目录上:
- 省略新增硬盘和创建目录的步骤(新增硬盘后要重启;虚拟机也可以新增逻辑硬盘)
- 执行
lsblk命令,发现多了个sdb硬盘 - 执行
fdisk /dev/sdb命令,对新硬盘进行分区:n子命令用于新增分区,w保存修改并退出,q退出且不保存 - 执行
mkfs -t ext4 /dev/sdb1命令,对新分区进行格式化(即指定其文件系统类型为ext4) - 执行
mount /dev/sdb1 /newdisk命令,真正进行挂载(重启后会失效) - 执行
umount {name}命令进行卸载(name可以是分区名称,也可以是挂载目录) - 如果要永久挂载,则需要在
/etc/fstab文件中进行配置,然后执行mount -a命令让配置立即生效
注意,
/dev目录代表设备(device),而不是开发环境
df [-h]
- 查看磁盘的使用情况(每一行代表一个分区,包括分区名称、总大小、已用大小、可用大小、挂载目录等)
- 当分区的空间使用率达到
80%时,就需要考虑清理空间或新增硬盘了
du [-ahsc] [--max-depth=x] {dir}:
- 查询某个目录的磁盘使用情况;如果不指定目录,则默认为当前目录
--max-depth:用于指定最大搜索深度;如果是0,则只统计该目录;如果是1,则只统计该目录及其一级子目录-a:加上该参数后,还会统计搜索到的文件-c:额外打印一行汇总记录(有点多余,因为最后一行本身就会显示该目录的总大小)-s:等价于--max-depth=0
ifconfig:
- 查看所有网卡信息(比如ip地址)
- Windows上的相应命令是
ipconfig;ipconfig /displaydns和ipconfig /flushdns用于打印/清空DNS缓存 - 网卡的配置信息保存在
/etc/sysconfig/network-scripts/ifcfg-xxx文件中(其中xxx代表网卡名称)?
关于虚拟机网络:
- 在NAT模式下,虚拟机通过母机上的VMnet8虚拟网卡与外界通信
- VMnet8虚拟网卡会将虚拟机的请求转发到母机的网卡上
- 扩展:虚拟机网络配置
hostname:
- 查看主机名称
- 可以通过修改
/etc/hostname文件来修改主机名称;重启后生效 - Hosts文件:Linux为
/etc/hosts,Windows为C:\Windows\System32\drivers\etc\hosts
7. 进程、服务
ps [-auxefp]:
- 查看进程的运行情况(PID:进程id;TTY:终端信息;TIME:占用CPU的总时间;CMD:该进程对应的命令或进程名)
-a:显示当前终端执行的所有进程-u:显示面向用户的信息,包含CPU占用、内存占用、虚拟内存大小(VSZ)、物理内存大小(RSS)、进程状态等指标-x:显示所有与终端无关的进程?-e或-A:显示系统中的所有进程-f:全格式,会展示父进程id(PPID)等信息-p:用于指定要展示的进程的id,如ps -p 1只会展示id为1的进程
进程的状态:
S:休眠s:表示该进程是会话的先导进程N:表示该进程的优先级低于普通优先级>:表示该进程的优先级高于普通优先级R:正在运行D:不可被中断的休眠Z:僵死状态,可能是进程已经结束,但其内存未被释放(要特别注意)T:被跟踪或被中止
top [-dip]:
- 不断监控进程的运行情况,每隔一段时间会刷新一次结果
-d:用于指定刷新的间隔(单位:秒);默认3秒刷新一次-i:不显示闲置和僵死的进程-p:用于指定要展示的进程的id,如top -p 1只会展示id为1的进程
在top命令的监控页面中,可以使用如下子命令:
P:按照CPU使用率倒序排序(默认)M:按照内存使用率倒序排序N:按照PID倒序排序u:用于指定要查询哪个用户的进程k:用于指定要终止哪个进程q:退出
kill [-9] {PID}:
- 向指定进程id对应的进程提出终止请求
-9:强制终止;这里的数字9代表的是信号量
killall [-I] {name}:
- 终止指定名称的进程及其子进程,支持通配符
-I:不区分大小写
pstree [-pu]:
- 以树状方式展示进程信息(父进程为父节点,子进程为子节点)
-p:显示进程号-u:显示启动该进程的用户
服务概述:
- 服务就是运行在后台的、通常会监听某个端口的进程,又称为守护进程
- 要查看所有服务,可以通过
setup命令打开设置面板,其中就有系统服务选项(*代表开机自动启动) - Linux启动时,会先创建
systemd进程(PID为1),该进程会根据运行级别来启动相应的服务
service {name} [start|stop|restart|reload|status]:
- 该命令可以对指定的服务进行启动、关闭、重启、重新加载文件、查看运行状态
- 但是,从CentOS 7.0开始,很多服务都不再受
service命令管理,转而改用systemctl命令 - 受
service命令管理管理的服务都存放在/etc/init.d目录中(这些服务被称为SysV服务)
chkconfig:
chkconfig --list:查看所有SysV服务在不同的运行级别下是否自动启动chkconfig --level {num} {name} on|off:开启或关闭指定的SysV服务在指定的运行级别下的自启动;重启后生效
systemctl [start|stop|restart|status|enable|disable|is-enabled] {name}:
- 该命令可以对指定的服务进行启动、关闭、重启、查看运行状态、设置/查看是否开机自启动
- 该命令能管理的服务都存放在
/usr/lib/systemd/system目录中(以.service为后缀?) - 服务名称可以省略
.service后缀,也可以写全名 - 该命令在设置是否开机自启动时,无需指定运行级别,因为运行级别默认是3和5
- 也可以用
systemctl list-unit-files命令查看各个服务是否开机自启动
netstat [-anp]:
- 查看网络状态,比如各个端口的监听状态、连接的建立情况
-a:显示所有状态(默认不显示LISTEN状态)-n:以数字形式显示ip地址和端口,而不是显示主机名称-p:显示进程信息- 可以通过
telnet {host} {port}命令判断某个主机的某个端口是否可以访问
打开/关闭防火墙的端口:
- 永久打开端口:
firewall-cmd --permanent --add-port={port}/{protocol} - 永久关闭端口:
firewall-cmd --permanent --remove-port={port}/{protocol} - 修改之后需要重新加载:
firewall-cmd --reload - 重新某个端口是否开启:
firewall-cmd --query-port={port}/{protocol}
8. 包管理、环境变量
rpm概述(CentOS):
- 全称为:RedHat Package Manager,已成为一套公认的行业标准
- rpm包的完整名称为:软件名 + 版本号 + 适用的操作系统 +
.rpm后缀 - 注意,适用的操作系统中如果包含
i686或i386,则适用于32位系统;如果包含noarch,则代表32位和64位通用
rpm命令:
rpm -qa:查询出所有已安装的软件包rpm -q {name}:查询是否已安装某个软件rpm -qi {name}:查询某个软件的安装信息rpm -ql {name}:查询安装某个软件时产生的所有文件和文件夹rpm -qf {file}:判断指定的文件或文件夹是哪个软件产生的rpm -e {name}:卸载指定的软件;某些软件可能会依赖被卸载的软件,此时卸载会报错,可以加--nodeps参数强制卸载rpm -ivh xxx.rpm:安装指定的软件包;-i:安装;-v:显示提示信息;-h:显示进度条
yum命令:
yum list:查询出远程仓库中的所有可安装的软件;配合管道命令和grep命令使用yum install {name}:安装指定程序,会自动下载软件包,并自动安装目标软件依赖的所有其它软件
apt概述(Ubuntu):
- 全称为:Advanced Packaging Tool
- 是Ubuntu系统上的软件包管理工具,类似于ContOS上的rpm
/etc/apt/sources.list文件中记录了apt的远程仓库地址- 扩展:apt的使用
配置环境变量(以配置JDK环境变量为例):
- 编辑环境变量文件:
vim /etc/profile - 在文件末尾定义JAVA_HOME环境变量:
export JAVA_HOME=/xxx - 将更新PATH环境变量中:
export PATH=$JAVA_HOME/bin:$PATH - 文件修改完成后,刷新:
source /etc/profile
可以通过
set命令查看所有环境变量,比如通过set | grep '^PATH'命令查看PATH环境变量