辅助我们进行命令的编写与程序的中断。
Tab按键
具有命令补全与文件补齐的功能。重点是可以避免我们打错命令或文件名。
Tab接在一串命令的第一个字段后面,则为命令补全;
Tab接在一串命令的第二个字段后面,则为文件补齐。
Ctrl -c 按键
中断目前程序的按键
Ctrl -d 按键
代表:键盘输入结束(End Of File, EOF 或 End Of Input)的意思;
也可以用来去掉exit的输入。例如你想直接离开命令行模式,可以直接按下ctrl + d 就能够直接离开(相当于输入exit)
command [-options] parameter1 parameter2 ...
命令 选项 参数(1) 参数(2)
命令之后的选项除了前面带减号[ - ]之外,某些特殊情况下,选项或参数前面也会带正号 [ + ]的情况。
将一段数据经过分析后,取出我们所想要的,或是经由分析关键词,取得我们所想要的那一行。
cut
将一段信息的某一段给它切出来,处理的信息是以行为单位;
cut主要的用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。
将PATH变量取出,然后找出第五个路径:echo $PATH | cut -d ‘:’ -f 5
将export输出的信息,取得第12字符以后的所有字符:export | cut -c 12-
grep
grep是分析一行信息,若当中有我们所需要的信息,就将该行拿出来;
sort
可以根据不同的数据形式来排序;
/etc/passwd 内容是以:来分隔的,以第三栏来排序:cat /etc/passwd | sort -t ‘:’ -k 3
wc
可以计算输出信息的整体数据;
查询目前账号文件中有多少个账号:cat /etc/passwd | wc -l
uniq
这个命令用来将重复的行删除掉只显示一个;
tee会同时将数据流分送到文件与屏幕,而输出到屏幕的,其实是stdout;
ls -l /home | tee ~/homefile | more
dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。
1)安装软件
命令行:dpkg -i <.deb file name>
示例:dpkg -i avg71flm_r28-1_i386.deb
2)安装一个目录下面所有的软件包
命令行:dpkg -R
示例:dpkg -R /usr/local/src
3)释放软件包,但是不进行配置
命令行:dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录
示例:dpkg –unpack avg71flm_r28-1_i386.deb
4)重新配置和释放软件包
命令行:dpkg –configure package_file
如果和-a一起使用,将配置所有没有配置的软件包
示例:dpkg –configure avg71flm_r28-1_i386.deb
5)删除软件包(保留其配置信息)
命令行:dpkg -r
示例:dpkg -r avg71flm
6)替代软件包的信息
命令行:dpkg –update-avail
7)合并软件包信息
dpkg –merge-avail
8)从软件包里面读取软件的信息
命令行:dpkg -A package_file
9)删除一个包(包括配置信息)
命令行:dpkg -P
10)丢失所有的Uninstall的软件包信息
命令行:dpkg –forget-old-unavail
11)删除软件包的Avaliable信息
命令行:dpkg –clear-avail
12)查找只有部分安装的软件包信息
命令行:dpkg -C
13)比较同一个包的不同版本之间的差别
命令行:dpkg –compare-versions ver1 op ver2
14)显示帮助信息
命令行:dpkg –help
15)显示dpkg的Licence
命令行:dpkg –licence (or) dpkg –license
16)显示dpkg的版本号
命令行:dpkg –version
17)建立一个deb文件
命令行:dpkg -b direc×y [filename]
18)显示一个Deb文件的目录
命令行:dpkg -c filename
19)显示一个Deb的说明
命令行:dpkg -I filename [control-file]
20)搜索Deb包
命令行:dpkg -l package-name-pattern
示例:dpkg -I vim
21)显示所有已经安装的Deb包,同时显示版本号以及简短说明
命令行:dpkg -l
22)报告指定包的状态信息
命令行:dpkg -s package-name
示例:dpkg -s ssh
23)显示一个包安装到系统里面的文件目录信息
命令行:dpkg -L package-Name
示例:dpkg -L apache2
24)搜索指定包里面的文件(模糊查询)
命令行:dpkg -S filename-search-pattern
25)显示包的具体信息
命令行:dpkg -p package-name
示例:dpkg -p cacti
tr
tr可以用来删除一段信息当中的文字,或是进行文字信息的替换;
将last输出的信息中,所有的小写变成大写字符:last | tr ‘[a-z]’ ‘[A-Z]’
col
将tab键转换成对等的空格键:col -x
join
处理两个文件之间的数据(两个文件中,有相同数据的那一行,才将它加在一起)
paste
直接将两行贴在一起,且中间以tab键隔开;
expand
将tab案件转成空格键;
将一个大文件,依据文件大小或行数来划分,可以将大文件划分成为小文件;
要使用xargs的原因是,很多命令其实并不支持管道命令,因此可以通过xargs来提供该命令使用标准输入;
在管道命令当中,常常会使用到前一个命令的stdout作为这次的stdin,某些命令需要用到文件名来进行处理时,该stdin与stdout可以利用减号“-”来替代
直接将命令丢到后台中【执行】的 &
将【目前】的任务丢到后台中【暂停】:[ctrl]-z
查看目前的后台任务状态:jobs
jobs [-lrs]
选项与参数:
-l :除了列出job number与命令串之外,同时列出PID的号码;
-r :仅列出正在后台run的任务;
-s :仅列出正在后台当中暂停(stop)的任务
将后台任务拿到前台处理:fg(foreground)
fg %jobnumber
fg: 默认取出那个+的任务
让任务在后台下的状态变成运行中:bg
bg %jobnumber
管理后台当中的任务:kill
kill -signal %jobnumber
signal :代表给予后面接的那个任务什么样的指示
-l(L的小写):重新读取一次参数的配置文件(类似reload);
-2:代表由键盘输入ctrl-c同样的操作;
-9:立刻强制删除一个任务;
-15:以正常的进程方式终止一项任务,与-9是不一样的
nohup:可以在退机或注销系统后,该能够让任务继续执行
nohup [命令或参数] :在终端前台中任务
nohup [命令或参数] &:在终端后台中任务
Linux给予进程一个所谓的【优先级(priority, PRI)】,这个PRI值越低代表越优先的意思。不过这个PRI值是由内核动态调整的,用户无法直接调整PRI值。如果要调整进程的优先级,就要通过nice(NI)值。
- nice值可调整的范围-20 ~ 19;
- root可随意调整自己或他人进程的nice值,且范围为-20 ~ 19;
- 一般用户仅可调整自己进程的nice值,且范围仅为0-19(避免一般用户抢占系统资源);
- 一般用户仅可将nice值越调越高
如何调整该进程的nice值?
一开始执行进程就立即给予一个特定的nice值:用nice命令;
nice [-n 数字] command
-n:后面接一个数值,数值的范围-20 - 19;
调整某个已经存在的PID的nice值:用renice命令;
renice [number] PID
free:查看内存使用情况
# 显示目前系统的内存容量
free -m
uname:查看系统与内核相关信息
uptime:查看系统启动时间与任务负载
netstat:追踪网络或socket文件
dmesg:分析内核产生的信息
vmstat:检测系统资源变化
添加用户
useradd 用户名 (当创建用户成功后,会自动的创建和用户同名的家目录)
useradd -d 指定目录 用户名 (给新创建的用户指定家目录,d:directory)
useradd -g 用户组 用户名 (增加用户时直接加上组,g:group)
修改密码
passwd 用户名
删除用户
userdel 用户名 (但保留其用户的家目录)
userdel -r 用户名 (删除用户以及用户的主目录)
查询用户信息指令
id 用户名
切换用户
su - 用户名
switch user
退出当前用户
exit/logout
查看当前用户
whoami/ who am i
新增组
groupadd 组名
删除组
groupdel 组名
修改用户的组
usermod -g 用户组 用户名
usermod -d 目录名 用户名 (改变该用户登录的初始目录)
用户和组相关文件
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
1 : 2 : 3 : 4 : 5 : 6 : 7
/etc/shadow 文件
口令的配置文件
每行的含义(9列):登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行的含义:组名:口令:组标识号:组内用户列表
查看文件的所有者:ls -al / ll
ls -l --time=ctime/atime: 读取状态时间和读取时间;ls默认显示出来的是该文件的mtime.
修改时间(modification time, mtime)
当该文件的内容数据变更时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性或权限。
状态时间(status time, ctime)
当该文件的状态改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间
读取时间(access time, atime)
当该文件的内容被读取时,就会更新这个读取时间,举例来说,我们使用cat去读取时,就会更新该文件的atime
chmod:修改文件或者目录的权限
第一种方式:+、-、=变更权限(+是增加相应的权限,-是删除对应的权限)
u:所有者 g:所有者 o:其他人 a:所有人(u、g、o的总和)
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件/目录名
相当于:chmod 751 文件/目录名
chown:修改文件所有者
改变所有者:chown newowner 文件/目录名
改变所有者和所在组:chown newowner:newgroup 文件/目录名
-R:如果是目录,则使其下所有子文件或目录递归生效
chgrp:修改文件/目录所在组
chgrp newgroup 文件/目录名
pwd(print working directory):显示当前工作目录的绝对路径
ls(list):显示当前目录下的文件内容
tree:以树状显示目录结构
cd(change directory):切换目录
mkdir(make directory):创建文件夹
rmdir(remove directory):删除空文件夹
touch:创建空文件
cp(copy):拷贝文件到指定目录
cp [选项] source dest
-r :递归复制整个文件夹
强制覆盖不提示的方法:\cp
\cp -r /home/bbb /opt
rm(remove):移除文件或目录
mv(move):移动文件与目录或重命名
cat:查看文件内容
more:基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
操作 | 功能说明 |
---|---|
space | 向下翻一页 |
Enter | 向下翻一行 |
q | 立刻离开more |
page up | 向上滚动一屏 |
page down | 向下滚动一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
操作 | 功能说明 |
---|---|
space | 向下翻动一页 |
Enter | 向下翻动一行 |
[page up] | 向上翻动一页 |
[page down] | 向下翻动一页 |
Home | 回到行首 |
End | 回到行尾 |
/子串 | 向下搜寻[字幕]的功能;n:向下查找;N:向上查找; |
?子串 | 向上搜寻[字幕]的功能;n:向上查找;N:向下查找; |
q | 离开less; |
echo:输出内容到控制台
echo $PATH(输出环境变量)
head:显示文件的开头部分内容,默认情况下head指令显示文件的钱10行内容
tail:输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容
重定向:>指令和>>指令
Shell会自动为我们打开和关闭0、1、2这三个文件描述符,我们不需要显式地打开或关闭它们。标准输入是命令的输入,默认指向键盘;标准输出是命令的输出,默认指向屏幕;标准错误是命令错误信息的输出,默认指向屏幕。
如果没有显式地进行重定向,命令通过文件描述符0从屏幕读取输入,通过文件描述符1和2将输出和错误信息输出到屏幕。但如果我们想从其他文件(再次强调,I/O设备在Unix/Linux中也是文件)读取输入或产生输出,就需要对0、1、2使用重定向了。
其语法如下:
command < filename 把标准输入重定向到filename文件中
command 0< filename 把标准输入重定向到filename文件中
command > filename 把标准输出重定向到filename文件中(覆盖)
command 1> fielname 把标准输出重定向到filename文件中(覆盖)
command >> filename 把标准输出重定向到filename文件中(追加)
command 1>> filename 把标准输出重定向到filename文件中(追加)
command 2> filename 把标准错误重定向到filename文件中(覆盖)
command 2>> filename 把标准输出重定向到filename文件中(追加)
command > filename 2>&1 把标准输出和标准错误一起重定向到filename文件中(覆盖)
command >> filename 2>&1 把标准输出和标准错误一起重定向到filename文件中(追加)
command < filename >filename2 把标准输入重定向到filename文件中,把标准输出重定向到filename2文件中
command 0< filename 1> filename2 把标准输入重定向到filename文件中,把标准输出重定向到filename2文件中
重定向的使用有如下规律:
1)标准输入0、输出1、错误2需要分别重定向,一个重定向只能改变它们中的一个。
2)标准输入0和标准输出1可以省略。(当其出现重定向符号左侧时)
3)文件描述符在重定向符号左侧时直接写即可,在右侧时前面加&。
4)文件描述符与重定向符号之间不能有空格!
>输出重定向和>>追加
1 :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 :表示stderr标准错误
& :表示等同于的意思,2>&1,表示2的输出重定向等同于1
1 > /dev/null 2>&1 语句含义:
1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
ln:软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
ln -s [源文件或目录] [软链接名]
给原文件创建一个软链接
案例:在/home目录下创建一个软连接myroot,连接到/root目录
ln -s /root /home/myroot
history:查看已经执行过的历史命令
history n
date:显示当前日期
设置系统当前时间:
date -s "2022-08-18 11:30:00"
cal(calendar ) + 年份:查看日历
bc:计算器
find:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [搜索范围] [选项]
案例:按文件名,根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
:选项 | :功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
locate:可以快速完成定位文件路径。
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。
locate指令无需遍历整个文件系统,查询速度较快。
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
which:查看某个指令在哪个目录下
whereis: 只找系统中某些特定目录下面的文件而已
grep指令和管道符号|
grep:过滤查找
管道符号|:表示将前一个命令的处理结果输出传递给后面的命令处理。
df(disk free): 列出文件系统的整体磁盘使用量;
du(disk usage): 查看文件系统的磁盘使用量(常用在查看目录所占磁盘空间);
lsblk(list block device): 列出系统上的所有磁盘列表;
tar [选项] xxx.tar.gz 打包的内容
案例:
压缩多个文件,将/home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -zcvf pa.tar.gz /home/pig.txt /home/cat.txt
将pc.tar.gz 解压到当前目录
tar -zxvf pc.tar.gz
:选项 | :功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压.tar文件 |
/bin
系统有很多存放执行文件的目录;
/boot
主要放置启动会使用到的文件,包括Linux内核文件以及启动选项与启动所需配置文件等。
/dev(device)
在Linux系统上,任何设备与接口设备都是以文件的形式存在于这个目录中。只要通过读写这个目录下面的某个文件,就等于读写某个设备。
/etc
系统主要的配置文件几乎都放置在这个目录内。
/lib
系统的函数库
/media
放置可删除的设备,包括软盘、光盘、DVD等设备都暂时挂载于此。
/mnt(mount 攀登)
挂载某些额外的设备
/opt
给第三方辅助软件放置的目录。
/run
放置系统启动后所产生的各项信息
/sbin
放置启动过程所需要的,里面包括启动、修复、还原系统所需要的命令。
/srv
srv可以视为service的缩写,是一些网络服务启动之后,这些服务所需要使用的数据目录。
/tmp
这是让一般用户或是正在执行的程序暂时放置文件的地方。
/usr
UNIX Software Resource的缩写,UNIX操作系统软件资源所放置的目录
/usr/bin/
所有一般用户能够使用的命令都放在这里。使用链接文件的方式将/bin链接至此,即/usr/bin与/bin一模一样。
/usr/lib/
与/lib功能相同,所以/lib就是链接到此目录中的。
/usr/local/
系统管理员在本机安装自己下载的软件。
/usr/sbin/
/sbin链接到此目录中
/usr/share/
主要放置只读的数据文件,当然也包括共享文件。
/usr/games/
与游戏比较相关的数据放置处
/usr/include/
c/c++等程序语言的头文件(head)与包含文件(include)放置处,当我们以Tarball(*.tar.gz)方式安装某些程序时,会使用到里面的许多文件。
/usr/libexec
放置某些不被一般用户常用的执行文件或脚本等。
/usr/lib/
/lib链接到此目录
/usr/src/
一般源代码建议放置到这里,src有source的意思。至于内核源代码则建议放置到/usr/src/Linux/目录下
/var(variable)
主要放置变动性的数据,包括缓存(cache)、日志文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file、run file),例如MySQL数据库的文件等。
/var/cache/
应用程序本身运行过程中会产生的一些缓存。
/var/lib/
程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。
/var/lock/
某些设备或是文件资源一次只能被一个应用程序所使用,如果同时又两个程序使用该设备时,就可能产生一些错误的状况,因此就得要该设备上锁,以确保该设备只会给单一软件使用。
/var/log/
这是日志文件放置的目录。
/var/mail/
放置个人电子邮箱的目录
/var/run/
某些程序或是服务启动后,会将他们的PID放置在这个目录下。
/var/spool
这个目录通常放置一些队列数据,所谓的队列就是排队等待其他程序使用的数据,这些数据被使用后通常都会被删除。
/home
系统默认的洪湖家目录
/root
系统管理员的家目录
/lost+found
这个目录是使用标准的ext2, ext3, ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下。
/proc
这个目录本身是一个虚拟文件系统,它放置的数据都是在内存当中,例如系统内核、进程信息、外接设备的状态及网络转台等。本身不占据任何硬盘空间。
/sys
也是一个虚拟的文件系统,主要也是记录内核与系统硬件信息相关的内容。不占据硬盘空间。
at是个可以处理仅执行一次就结束的命令,要执行at,必须有atd这个服务。
使用at这个命令来产生所要运行的任务,并将这个任务一文本文件的方式写入/var/spool/at/目录中,该任务便能等待atd这个服务的使用与执行了。
重新启动atd服务:systemctl restart atd
让atd服务开机就自动启动:systemctl enable atd
查看atd目前的状态:systemctl status atd
为了安全,可以利用/etc/at.allow与/etc/at.deny这两个文件来实现对at的使用限制,at的工作情况如下:
实际运行单一计划任务
at [-mldv] TIME
再过五分钟:at now + 5 minutes
脱机继续执行的任务:
由于at计划任务的使用,系统会将该项at任务独立出你的bash环境,直接交给系统的atd程序来接管。因此,当你执行了at的任务之后就可以立刻脱机了,剩下的工作就完全交给Linux管理。
at常用命令:
crontab这个命令所设置的任务将会循环地一直执行下去,可循环的时间为分钟、小时、每周、每月或每年等。
循环执行的计划任务是由cron(crond)这个系统服务来空值的;
crontab是Linux提供用户空值计划任务的命令;
crontab的执行可以通过:命令,或者编辑/etc/crontab;
让crontab可以生效的服务是crond。
为了避免安全性问题,可以限制使用crontab的账号:
/etc/cron.allow
将可以使用crontab的账号写入其中,不在这个文件内的用户则不可使用crontab
/etc/cron.deny
将不可以使用crontab的账号写入其中,未记录到这个文件当中的用户,就可以使用crontab
crontab的语法
crontab [-u username] [-l | -e | -r]
-u : 只有root才能执行这个任务,亦即帮其他使用者建立/删除crontab计划任务;
-e : 编辑crontab的任务内容;
-l : 查看crontab的任务内容;
-r : 删除所有的crontab的任务内容,若仅要删除一项,请用-e去编辑。
重新启动crond服务:systemctl restart crond
# 用charles的身份在每天的12:00发信给自己
0 12 * * * mail -s "at 12:00" charles < /home/charles/.bashrc
#分 时 日 月 周 |<=====================命令串====================>|
代表的意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 需要执行的命令 |
特殊字符 | 代表意义 |
---|---|
* | 代表任何时刻都接受的意思 |
, | 代表分隔时段的意思 |
- | 代表一段时间范围内 |
/n | 那个n代表数字,亦即是【每隔n单位间隔】的意思 |
系统的配置文件:/etc/crontab 、/etc/cron.d/*
- 可以编辑/etc/crontab这个文件来执行【系统的例行性任务】;设置分为七栏,【分、时、日、月、周、执行者、命令】为其设置根据;
- crontab -e这个crontab其实是/usr/bin/crontab这个执行文件;分为六栏,【分、时、日、月、周、命令】为其设置根据;
- cron这个服务的最低检测限制是分钟,所以cron会每分钟去读取一次/etc/crontab与/var/spool/cron
crond服务读取配置文件的位置
跟系统的运行有关系的两个配置文件是/etc/crontab文件以及/etc/cron.d/*目录内的文件;
跟用户自己的任务有关系的配置文件,就是放在/var/spool/cron里面的文件;
crontab的基本应用
anacron是一个程序并非一个服务,配置文件放置在/etc/cron.hourly
anacron存在的目的是,用于处理非24小时运行的Linux系统所执行的crontab,以及因为某些原因导致的超过时间而没有被执行的任务。
其实anacron也是每小时被crond执行一次,然后anacron再去检测相关的计划任务有没有被执行,如果有超过期限的任务,就执行该任务,执行完毕或无须执行任何任务时,anacron就停止。
由于anacron默认会以一天、七天、一个月为期去检测系统未执行的crontab任务,因此对于某些特殊的使用环境非常有帮助。
anacron是怎么知道我们的系统啥时候关机的呢?这就要使用anacron读取的时间记录文件(timestamps)了。anacron会去分析现在的时间与时间记录文件所记载的上次执行anacron的时间,两者比较后发现有差异,那就是在某些时刻没有执行crontab,此时anacron就会开始执行未执行的crontab任务了。
anacron [-sfn] [-sfn] [job] …
anacron的配置文件/etc/anacrontab
执行日志文件的轮询(logrotate)
logrotate的任务:将日志文件数据移动,让旧的数据与新的数据分别存放,让系统更有效地记录登陆信息,提高文件的读写性能。
日志文件分析logwatch的任务
如果系统发生了软件问题、硬件错误、信息安全问题等,绝大部分的错误信息都会被记录到日志文件中。
logwatch程序会主动分析登陆信息。
建立locate的数据库
文件名数据库放置在/var/lib/mlocate中;
系统会主动地执行updatedb来更新数据库;
manpage查询数据库的建立
要使用manpage数据库,就要执行mandb才能建立好;
RPM软件日志文件的建立
RPM数据库,将文件名作排序的记录
删除缓存
系统通过计划任务执行名为tmpwatch的命令来删除缓存;
与网络服务有关的分析操作
如果你安装了类似网站服务器的软件,那么你的Linux系统通常就会主动地分析该软件的日志文件。
ifconfig:查看网络配置
ping:测试主机之间网络连通性
lsof(list open files)是一个列出当前系统打开文件的工具
网络环境配置
第一种方法(自动获取)
登录后,通过界面来设置自动获取ip,linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样。
第二种方法(指定ip)
直接修改配置文件来指定IP,并可以连接到外网
编辑:vi /etc/sysconfig/network-scripts/ifcig-ens33
设置主机名
设置hosts映射
hosts是什么?用来记录IP和Hostname(主机名)的映射关系
编辑:/etc/hosts
DNS
Domain Name System的缩写,域名系统
是互联网上作为域名和IP地址相互映射的一个分布式数据库
ps -l:只能看自己bash的进程;
ps aux:查看系统所有的进程;
ps -lA:也是能够查看所有系统的进程;
ps axjf:连同部分进程树状态
选项与参数:
-A:所有的进程均显示出来,与-e具有相同的效果;
-a:不显示与终端有关的所有进程;
-u:有效使用者(effective user)相关的进程;
x:通常与a这个参数一起是个,可列出较完整信息
输出格式规划:
l:较长、较详细的将该PID的信息列出;
j:任务的格式(jobs format);
-f:做一个更为完整的输出
造成僵尸进程的原因在于该进程应该已经执行完毕,或是应该要终止了,但是该进程的父进程却无法完整地将该进程结束掉,而造成该进程一直存在内存当中;如果你发现在某个进程的CMD后面接上了
时,就代表该进程是僵尸进程。
相比于ps是选取一个时间点的进程状态,top则可以持续监测进程运行的状态。
top [-d数字] | top [-bnp]
选项与参数:
-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒;
-b:以批量的方式执行top,还有更多的参数可以使用,通常会搭配数据流重定向来将批量的结果输出为文件;
-n:与-b搭配,意义是,需要执行几次top的输出结果;
-p:指定某些个PID来执行查看监测;
在top执行过程当中可以使用的按键命令:
?:显示在top当中可以输入的按键命令;
p:以CPU的使用排序显示;
M:以Memory的使用排序显示;
N:以PID来排序;
T:由该进程使用的cpu时间累积(TIME+)排序;
k:给予某个PID一个信号(signal);
r:给予某个PID重新制定一个nice值;
q:退出top的按键
top上面的界面为整个系统的资源使用状态:
第一行(top...):这一行显示的信息分别为:
1.目前的时间;
2.开机到目前为止所经过的时间;
3.已经登录系统的用户人数;
4.系统在1、5、15分钟的平均任务负载
第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态(running,sleeping/stopped,zombie)
第三行(%CPU...):显示的是CPU的整体负载,每个项目可使用?(问好)查看。
第四行与第五行:表示目前的物理内存与虚拟内存(Mem/Swap)的使用情况。
第六行:这个是在top进程当中输入命令时,显示状态的地方。
top下半部分的画面,则是每个进程使用的资源情况:
1.PID:每个进程的ID;
2.USER:该进程所属的用户;
3.PR:Priority的间歇,与Priority有关,也是越小则越早被执行;
4.NI:Nice的简写,与Priority有关,也是越小则越早被执行;
5.%CPU:CPU的使用效率;
6.%MEM:内存的使用效率;
7.TIME+:CPU使用时间的累加
top默认使用CPU使用率(%CPU)作为排序的依据。如果想要使用内存使用率排序,则可以按下【M】,若要恢复则按下【P】即可。
pstree [-A|U] [-up]
选项与参数:
-A:各进程树之间的连接以ASCII字符来连接;
-U:各进程树之间的链接以Unicode的字符来连接,在某些终端界面下可能会有错误。
-P:并同时列出每个进程的PID;
-u:并同时列出每个进程的所属账号名称
所有的进程都是依附在systemd这个进程下面的。这个进程的PID是一号,因为它是由Linux内核所主动调用的第一个进程,所以PID就是一号了。
终止进程kill和killall
进程是如何互相管理的?是通过给予该进程一个信号(signal)去告知该进程你想要让它做什么。kill -l
代号 | 名称 | 内容 |
---|---|---|
1 | SIGHUP | 启动被终止的进程,可让该PID重新读取自己的配置文件,类似重新启动。 |
2 | SIGINT | 相当于用键盘输入ctrl+c来终端一个进程的运行 |
9 | SIGKILL | 代表强制终端一个进程的执行,如果该进程执行到一半,那么尚未完成的部分可能会有【半成品】产生,类似vim会有.filename.swp保留下来 |
15 | SIGTERM | 以正常的方式结束进程来终止该进程。 |
19 | SIGSTOP | 相当于用键盘输入ctrl+z来暂停一个进程的运行。 |
kill -signal PID
kill可以帮我们将这个信号传送给某个任务(%number)或是某个PID(直接输入数字)
执行任务管理的操作中,其实每个任务都是目前bash的子进程,即彼此之间是有相关性的,我们无法用任务管理的方式有tty1的环境去管理tty2的bash。
可以出现提示字符让你操作的环境称为前台,至于其他任务就可以放入后台去暂停或运行;
放入后台的任务想要运行时,它必须不能够与用户进行交互,而且放入后台的任务不可以使用ctrl+c来终止;
服务(service)本质就是进程,但是是运行在后台,通常都会监听某个端口,等待其他程序的请求,又称为守护进程。
systemctl/service 服务名 [start|stop|restart|status]
service指令管理的服务在/etc/init.d查看
服务的运行级别(runlevel):7种(主要3和5)
开机的流程说明
开机 -> BIOS -> /boot -> systemd进程1 -> 运行级别 -> 运行级对应的服务
chkconfig:给服务的各个运行级别设置自启动/关闭
systemctl 管理指令
systemctl [start | stop | restart | status] 服务名
systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
systemctl设置服务的自启动状态
firewall 指令
netstat [选项]
-an:按一定顺序排列输出
-p:显示哪个进程在调用
案例:请查看服务名为sshd的服务的信息
netstat -anp | grep sshd
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况
netstat -tunlp | grep 端口号
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp | grep 80 //查看所有80端口使用情况
rpm用于互联网下载包的打包及安装工具;
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install
仅更新指定的软件命令:yum update
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove
查找软件包命令:yum search
清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
yum clean all
yum makecache
apt 是 Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令进行软件包的安装、删除、清理等。
备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
更新源
sudo vim /etc/apt/sources.list
粘贴内容
清华
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
让更新源生效
sudo apt-get update
单独一次使用
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
SSH(secure Shell):建立在应用层和传输层基础上的安全协议。
SSH服务需要安装相应的服务器和客户端。
sudo apt install net-tools:查看Ubuntu是否安装SSHD服务
sudo apt-get install openssh-server:安装SSH服务器和客户端
service sshd restart:启动sshd服务,会监听端口22
在windows使用XShell7和XFTP7登录Ubuntu
从一台linux系统远程登录另一台linux系统
ssh 用户名@IP
例如:ssh [email protected]
使用ssh访问出现错误时,可查看是否有文件 ~/.ssh/known_ssh,尝试删除该文件解决。
登出:exit 或者 logout
:日志文件 | :说明 |
---|---|
/var/log/boot.log | 系统启动日志 |
/var/log/cron | 记录与系统定时任务相关的日志 |
/var/log/cups | 记录打印信息的日志 |
/var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
/var/log/btmp | 记录错误登录的日志。这个文件是二进制文件,不能直接使用vi查看,而要使用lastb命令查看 |
/var/log/lasllog | 记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,要使用lastlog命令查看 |
/var/log/maillog | 记录邮件信息的日志 |
/var/log/message | 记录系统重要信息的日志,这个日志文件中会记录linux系统的绝大多数信息。如果系统出现问题,首先要检查的应该就是这个日志文件 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。是二进制文件,要使用lastlog查看。 |
/var/log/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。这个文件不能用vi查看,而要使用w/who/users等命令查看 |
查询linux中的rsyslogd服务是否启动
ps aux | grep "rsyslog" | grep -v "grep"
查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog
配置文件:/etc/rsyslog.conf
日志类型:
: | : |
---|---|
日志级别:
: | : |
---|---|
日志轮替
logrotate 配置文件
[[上下左右]按键移动光标、删除字符、删除整行、复制、粘贴等
i 进入编辑模式;
Esc 退出编辑模式或命令行模式
[: / ?] - 从一般模式进入命令行模式;
查找数据、读取、保存、批量替换字符、退出vi、显示行号等操作