1.切换到root帐户
su
sudo su
*会需要提示输入管理员密码,才能进入
2.打开gedit
sudo gedit
*需要root权限
3.安装软件或者包(这是使用命令的方式安装,有其他的安装方式!)
sudo apt-get install 软件名或者包名
*需要root权限
4.重启系统
sudo reboot
*需要root权限
5.关机
sudo shutdown -h now
*需要root权限
6.查看当前使用的Shell类型
echo $SHELL
*Shell有多种不同的版本,按照来源可分为两大类:一类是有贝尔实验室开发的,以Bourne Shell(sh)为代表,兼容此类(sh)的Shell有bash、ksh、zsh。另外一类是由加州大学伯克莱分校开发的,以 C Shell(csh)为代表,兼容此类(csh)的有tcsh。bash(Bourne again / born again)是许多Linux发行版的默认Shell。完全兼容sh,可以不用修改sh脚本,直接在bash中执行。
7.环境变量
7.1查看用户主目录:
echo $HOME
7.2查看可执行命令的搜索路径
echo $PATH
7.3查看当前用户的登录名
echo $LOGNAME
7.4查看当前命令提示符
echo $PS1
7.5查看当前使用的Shell
echo $SHELL
7.6查看当前目录下的内容
显示隐藏的文件或文件夹 模式
ll
不显示隐藏的文件或文件夹 模式
ls -l
下面是一段,ll 或者 ls 的结果,每一行第一个字符是"d",是文件夹;第一个字符是"-",是文件。
drwxr-xr-x 10 root root 4096 10月 4 21:27 pycharm-community-2018.2.4
-rwxrwxrwx 1 zhw zhw 260812419 10月 4 19:53 pycharm-community-2018.2.4.tar.gz
8.查看最近使用过的所有命令
history
*查看的是当前用户的命令历史,而非其他用户
每一条执行过的命令都有历史,历史中有该命令执行过的编号,允许使用编号再一次执行该命令
这里是历史
zhw@zhw-VirtualBox:~$ history
1 ping 127.0.0.1
2 help
3 ping http://ppa.launchpad.net/fcitx-team/nightly/ubuntu/
下面的命令作用是再一次执行"ping http://ppa.launchpad.net/fcitx-team/nightly/ubuntu/"命令。
!3
9.命令行的输入与输出
Shell程序通常自动打开3个标准文档:标准输入文档(stdin)、标准输出文档(stdout)、标准错误输出文档(stderr)。stdin一般对应终端键盘,stdout和stderr对应终端屏幕。多数情况下使用标准输入输出作为命令的输入输出,但有时可能要改变标准输入输出,这就涉及重定向和管道。
输入重定向
主要用于命令的输入源,基本用法:
命令 < 文件名
wc命令用于统计指定的文件包含的行数、字数和字符数。
wc < 1.txt
输出重定向
主要用于命令的输出,让标准输出不要显示在屏幕上,而是写入指定文件中,基本用法:
命令 > 文件名
例如:
history > 1.txt
如果1.txt文件存在,则以覆盖的方式写入!!!
下面是以追加的方式写入
history >> 1.txt
以上是对标准输出来讲的,至于标准错误输出的重定向,只需要换一种符号,将">“改为"2>”,将">>“改为"2>>”,讲标准输出和标准错误输出一起重定向到同一个文件,使用符号”&>"。
10.在终端中输出某个文件
cat 1.txt
*打印
11.查看用户与组配置文件
用户帐户配置文件 /etx/passwd
sudo cat /etc/passwd
结果:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
对应的解释:
帐户名:密码:账户编号(UID):用户所属的默认组(GID):注释:用户主目录:所使用的Shell
用户密码置文件 /etc/shadow
sudo cat /etc/shadow
结果:
root:$6$P5rvXWd4$XRXhPJlqJJxBgS8W05BtSfeoPTZasl/hsuCBUhIZTXijF.WYpcgrMruqbBgQuK0QWb86qh40lSetY9/5iE92W/:17811:0:99999:7:::
daemon:*:17016:0:99999:7:::
bin:*:17016:0:99999:7:::
sys:*:17016:0:99999:7:::
sync:*:17016:0:99999:7:::
games:*:17016:0:99999:7:::
对应的解释:
帐户名:密码:最近一次修改:最短有效期:最长有效期:过期前警告:过期日期:禁用:保留用于未来扩展
*第2个字段是加密的密码,该字段值如果为空,表示没有密码;如果为!!,表示密码已被禁用(锁定)。
*第3个字段是最近一次修改密码的日期(这是相对日期格式,即从1970年1月1日到修改日期的天数。)
*第4个字段表示密码多少天内不许修改。0值表示随时修改。
*第5个字段表示多少天后必须修改
*第6个字段表示密码过期前多少天发出警告信息
*第7个字段表示密码过期日期,如果为空表示永不过期。
组帐户配置文件 /etc/group
cat /etc/group
结果:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,zhw
对应的解释:
组名:组密码:GID:组成员列表
组密码配置文件 /etc/gshadow
sudo cat /etc/gshadow
结果:
root:*::
daemon:*::
bin:*::
sys:*::
adm:*::syslog,zhw
对应的解释:
组名:加密后的密码:组管理员:组成员列表
12.安装用户帐户管理工具
sudo apt-get install gnome-system-tools
13.查看全部用户列表
使用了awk文本分析工具
awk -F ':' '{print $1}' /etc/passwd
14.使用命令管理 用户帐户 和 组
添加用户帐户
useradd 或 adduser
删除用户帐户
userdel 或 deluser
修改用户帐户
usermod
chfn -f表示全名,-h电话号码,-o办公地址
chfn
修改帐户密码:
sudo passwd 帐户名称
查看useradd的默认配置
useradd -D
帐户密码锁定
passwd -l 用户名
帐户密码解锁
passwd -a 用户名
查看某帐户当前状态
passwd -S 帐户名
删除帐户密码
passwd -d 帐户名
组的创建
groupadd 或 addgroup 组名
组的删除
groupdel 或 delgroup 组名
组的修改
groupmod 组名
查看某用户所属的全部组
groups 用户名
将用户添加到指定的组
gpassqd --a 用户名 组名
将某用户从组中删除
gpasswd --d 用户名 组名
批量添加到组中
gpasswd -M 用户名1,用户名2....
还允许使用adduser、deluser,将用户添加到组中、将用户从组中删除
adduser 用户名 组名
deluser 用户名 组名
查看用户信息
id 用户名
查看当前系统有哪些用户登录
sudo who
查看系统历史登录情况
last
*ubuntu 特别提供命令:
sudo adduser
sudo deluser
sudo addgroup
sudo delgroup
以上命令的选项均使用长格式,母的是为了更完善用户信息。
15.目录的认识
/ 表的是根目录
~ 表示的是当前用户的主目录
. 表示的是当前目录
.. 表示的是父目录
/bin 存放用于系统管理维护的常用实用命令文件
/boot 存放用于系统启动的内核文件和引导装载程序文件
/dev 存放设备文件
/etc 存放系统配置文件,如网络配置、设备配置、X Window系统配置等
/home 各个用户的主目录,其中的子目录名称即为各用户名
/lib 存放动态连接共享库(其作用类似于Windows中的.dll文件)
/media 为光盘、软驱等设备提供默认挂载点
/mnt 为某些设备提供默认挂载点
/root root用户主目录
/proc 系统自动产生的映射。查看该目录中的文件可以获取有关系统硬件运行的信息。
/sbin 存放系统管理员或root用户使用的命令文件
/usr 存放应用程序和文件
/var 保存经常变化的内容,如系统日志、打印等
Linux文件类型
在介绍文件类型之前,先介绍一下文件结构。Linux文件无论是一个程序、一个文档、一个数据库,或者是一个目录,操作系统都会赋予文件相同的结构,具体包括以下两个部分。
索引节点:又称I节点。在文件系统结构中,包含有关相应文件信息的一个记录,这些信息包括文件权限、文件所有者、文件大小等。
数据:文件的实际内容,可以是空的,也可以非常大,并且有自己的结构。
可以将Liunx文件分为以下4种类型。
1.普通文件
2.目录文件
3.设备文件
4.链接文件
使用ls -l命令以长格式列目录时,每一行第1个字符表示文件类型。
- 表示普通文件
d 表示目录文件
c 表示字符设备文件
b 表示块设备文件
l 表示符号链接文件
文件与目录的命名规范
在Linux中,文件和目录的命名由字母、数字和其他字符组成,应遵循一下规范
目录或文件名长度可以达到255个字符
包含完整路径名称及目录(/)的完整文件名为4096个字符
严格区分大小写
可以包含空格等特殊字符,但必须使用引号;不可以包含“/”字符。还应避免特殊字符:* ? < ? ; & ! [ ] | \ ' " ` ( ) { }
同类文件应使用同样的后缀或扩展名
16.目录管理
创建目录
mkdir ~/test
mkdir -p ~/te1/te2
-p 表示的是要建立的目录的父目录尚未建立,将同时创建父目录
删除目录
rm -r ~/test1
改变工作目录
cd 路径
显示当前路径
pwd
显示目录内容
ls [选项] [目录或文件]
默认情况下输出条目按字母顺序排列。如果没有给出参数,则将显示当前目录下所有子目录和文件的信息。其选项及其含义如下:
-a 显示所有的文件,包括以"."开头的文件
-c 按文件修改时间排序
-i 在输出的第1列显示文件的索引节点号
-l 以长格式显示文件的详细信息。输出的信息分成多列,依次是文件类型与权
限、链接数‘、文件所有者、所属组、文件大小、建立或最近修改的时间、文
件名
-r 按逆序显示ls命令的输出结果
-R 递归地显示指定目录的各个子目录中的文件
17.文件管理
文件内容显示
cat命令连接文件并打印到标准输出上。
cat [选项] [文件名] [文件名]
该命令有两个主要功能,一是用来输出文件内容,二是用来合并文件。
cat ~/1.txt
cat 1.txt 2.txt > 3.txt
more命令
如果文件太长,用cat命令只能看到文件最后一页,而用more命令时可以逐页显示,more命令语法如下:
more [选项] [文件名]
该命令一次显示一屏文本,满屏后显示停下来,并在每个屏幕的底部出现一个提示信息,给出至今已显示的该文件的百分比。
less命令
less命令也可以用来分页显示文件内容,但功能比more更强大,语法:
less [选项] [文件名]
less比more更灵活。例如,用page up、page down键可以向前、向后移动一页,用上下光标键可以前后移动一行。
ps:可以使用q退出程序
head命令
head命令在屏幕上显示文件的开头若干行或多少个字节,如下:
head [选项] [文件名]
不带任何参数,默认输出前10行
-n 表示输出前n行
-e 表示输出n个字节
tail命令
tail命令在屏幕上显示指定文件的末尾若干行或若干字节,与head命令相反。如下:
tail [选项] [文件名]
具体用法参见head命令
od命令
od命令用于按照特殊格式查看文件内容
od [选项]...模式 [文件名]...
文件内容查找
grep [选项]...模式 [文件名]...
参数如下:
-i 表示忽略大小写
-x 表示强制整行匹配
-w 强制关键字完全匹配
-e 用于定义正则表达式
-m 定义多少次匹配后停止搜索
-n 指定输出的同时打印行号
-H 为每一匹配打印文件名
-r 在指定目录中进行递归查询
comm命令
对两个已经排好序的文件进行逐行比较,只显示它们共有的行,如下:
comm [-123] 文件1 文件2
-1 表示不显示仅存在文件1中存在的行
-2 表示不显示仅存在文件2中存在的行
-3 表示不现实在comm命令输出中的第1列、第2列和第3列
diff命令
diff命令逐行比较两个文件,列出它们的不同之处,如下:
diff [选项] 文件名列表
文件内容排序
sort 命令用于对文本文件的各行进行排序,如下:
sort [选项] 文件名列表
文件内容统计
wc命令用于统计指定文件的字节数、字数、行数、并输出到屏幕,如下:
wc [选项] 文件名列表
参数如下:
-c 表示统计字节数
-l 表示统计行数
-w 表示统计字数
文件查找
find命令用于在目录结构中搜索满足查询条件的文件并执行指定操作,如下:
find path -option [ -print ] [ -exec -ok command ] {} \;
简单的用法如下:
sudo find ~ -name "a*.txt" -print
sudo find ~ -name "1.txt" -exec grep "100" {} \;
sudo find ~ -name "1.txt" -exec less {} \;
至于其他比较复杂的用法,请到Ubuntu find命令详解
locate命令
locate命令用于查找文件,它比find命令的搜索速读快,但需要一个数据库,这个数据库由每天的例行工作(crontab)程序自动建立和维护,如下:
locate [选项]... [模式]...
参数:
-d 指定locate命令所使用的数据库,以取代默认的数据库/var/lib/mlocate/mlocate.db
-c 表示只列出查到的题目数量
-A 表示列出匹配的所有条目
-w 表示匹配整个路径
例如:
locate -w chgpasswd
18.文件、目录的复制、移动、删除
cp命令
将源文件或目录复制到目标文件或目录中,如下:
cp [选项] 源文件或目录 目标文件或目录
如果参数中指定了两个以上的文件或目录,且最后一个是目录,则cp命令视最后一个为目的目录,将前面指定的文件和目录复制到该目录下,如果最后一个不是已存在的目录,则cp命令将给出错误信息。
rm命令
可以删除一个目录中的一个或多个文件和目录,也可以将某个目录及下属的所有文件和子目录删除,如下:
rm [选项] 文件列表
该命令对于链接文件,只是删除整个链接文件,而原有文件保持不变。
mv命令
用来移动文件或目录,还可以用于修改文件或目录名,如下:
mv [选项] 源文件或目录 目标文件或目录
参数
-i 表示目标文件已存在时,在覆盖之前,给出提示
-f 表示目标文件已存在时,不给出任何提示
修改文件或目录名
mv 1.txt 4.txt
mv 文档 文件
链接文件的创建
链接文件命令是ln,该命令在文件之间创建链接,如下:
ln -s 目标(源文件或目录) 链接文件
符号连接
硬连接
ln 目标(源文件或目录) 链接文件
连接的对象可以是文件,也可以是目录。如果链接指向目录,那么用户就可以利用该连接直接进入被链接的目录,而不用给出到达该目录的一长串路径。
文件压缩与解压
gzip命令
对.gz文件操作
gzip [选项] 压缩/解压文件名
unzip命令
对winzip格式文件进行解压缩
unzip [选项] 解压缩文件名
tar命令
用于对文件和目录打包
tar [选项] 文件或目录名
19.分配权限
变更所有者
chown [选项] [新所有者] 文件列表
使用-R进行递归变更,即目录连同子目录下的所有文件的所有者都变更。
例如:
chown root *.txt
结果:
-rw-rw-r-- 1 root zhw 20856 10月 11 16:25 1.txt
-rw-rw-r-- 1 root zhw 16719 10月 11 13:53 2.txt
-rw-rw-r-- 1 root zhw 31 10月 11 11:34 3.txt
变更所属组
chgrp [选项] [新的所属组] 文件列表
使用-R也可以连同子目录中的文件一起变更所属组。
例如:
chgrp root *.txt
结果:
-rw-rw-r-- 1 root root 20856 10月 11 16:25 1.txt
-rw-rw-r-- 1 root root 16719 10月 11 13:53 2.txt
-rw-rw-r-- 1 root root 31 10月 11 11:34 3.txt
还可以使用chown命令同时变更文件所有者和所属组,如下:
chown [选项] [新所有者] : [新的所属组] 文件列表
例如:
chown zhw:zhw *.txt
结果:
-rw-rw-r-- 1 zhw zhw 20856 10月 11 16:25 1.txt
-rw-rw-r-- 1 zhw zhw 16719 10月 11 13:53 2.txt
-rw-rw-r-- 1 zhw zhw 31 10月 11 11:34 3.txt
查看用户的umask值
umask
20.使用存档工具进行简单备份
语法如下:
tar [选项] 档案文件 文件或目录列表
压缩文件:
tar -czvf xxx.tar ~/test
将用户目录下的test文件或文件夹打包成xxx.tar
解压文件:
tar -xzvf xxx.tar
将xxx.tar解压到当前目录下
使用dd命令进行存档
dd是一种文件转换命令,用于复制文件,并在复制的同时进行指定的转换和格式处理,如果转换取决于选项和参数。
它使用if选项指定输入端,of选项指定输出端,如下:
dd if=/dev/cdrom of=cdrom.iso
由于dump和restore命令的出现,dd比较少用了。
21.APT命令行工具的使用(对软件包的管理)
Linux 软件包管理发展过程
1.从源码安装软件
早期的Liunx系统中主要使用从源码发布软件,用户往往需要直接 将源码编译成二进制文件,并对系统进行相关配置,有时甚至需要自己修改代码 。不过这样的安装软件,显然难度比较大。
2.使用软件包安装软件
软件包将应用程序的二进制文件、配置文档和帮助文档等合并打包在一个文件中,用户只需使用相应的软件包管理器来执行软件的安装、卸载、升级和查询等操作。
RPM是RedHat Package Manager(软件包管理器)的缩写,是由Red Hat公司提出的一种软件包管理标准,文件后缀为.rpm。
Deb是Debian Packager的缩写,是Debian和Ubuntu系列发行版本上使用的软件包格式(文件后缀为.deb),需要使用dpkg 命令进行管理。
3.高级软件包管理工具
Yum(Yellow dog Updater,Modified)是一个基于PRM包的软件包管理器,能够从指定的服务器自动下载RPM包并且完成安装。适用于Red Hat Enterprise Linux、CentOs、Fedora等Liunx。
APT(Advanced Packaging Tools)可译为高级软件包工具,是Debian及其派生发行版本的软件包管理器。
使用apt安装和卸载时需要提供准确的软件包名。而apt-cache提供模糊查询。
列出已安装的所有软件:
apt-cache pkgnames
模糊查询软件包:
apt-cache search ssh
show可以查看软件包详细信息(要求是软件包全名)
apt-cache show python
depends可以查看软件包依赖的软件包
apt-cache depends python
rdepends可以查看软件包被哪些软件包依赖
apt-cache rdepends python
showpkg查看软件包的依赖关系
apt-cache showpkg python
policy查看软件包的安装状态和版本信息
apt-cache policy python
安装软件包
建议安装前先执行下面的命令更新一下apt-get的信息
apt-get update
然后在执行安装命令
apt-get install python
卸载软件包
sudo apt-get remove emacs
如果要删除的同时还删除配置文件,则执行:
sudo apt-get purge emacs
如果需要更彻底的删除,则执行:
sudo apt-get autoremove 软件包名
这将删除该软件包及其所依赖的、不再使用的软件包。
清除软件包备份:
sudo apt-get autoclean 软件包名
软件包升级:
在升级前请先更新apt-get中的信息
apt-get update
apt-get upgrade
执行下面的命令,可以识别出依赖关系改变的情形做出相应处理,会尝试升级最重要的包。
sudo apt-get dist-uprade
执行apt-get upgrade
命令时加上-u选项很有必要,这可以让apt显示完整的可更新软件包列表。
可以使用-s来模拟升级软件包,这样便于查看哪些软件包会被更新,确认没有问题后,再实际执行升级。
如果只想对某一具体的软件包进行升级,可以在执行安装软件包命令时加上-reinstall 选项。
sudo apt-get --reinstall install 软件包名
子命令 | 说明 |
---|---|
apt-get update | 获取最新的软件包列表,同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,以确保用户能获取最新的软件包 |
apt-get upgrade | 更新当前系统中所有已安装的软件包,并同时更新这些软件包所依赖 |
apt-get install | 下载、安装软件包并自动解决依赖关系 |
apt-get remove | 卸载指定的软件包 |
apt-get autoremove | 自动卸载所有未使用的软件包 |
apt-get purge | 卸载指定的软件包及其配置文件 |
apt-get source | 下载软件包的源代码 |
apt-get clean | 清理一下载的软件包,实际上是清除/var/cache/apt/archives 目录中的软件包,不会影响软件的正常使用 |
apt-get autoclean | 删除已卸载的软件的软件包备份 |
*Ubuntu使用文本文件/etc/apt/sources.list来保存软件包的安装和更新源的地址。另外与该文件功能相同的是/etc/apt/sources.list.d目录下的.list文件,为在单独文件中写入安装源的地址提供了一种方式,通常用来安装第三方软件。执行apt-get updata就是同步(更新)/etc/apt/sources.list和/etc/apt/sources.list.d目录下的.list文件的软件源的索引,以获取最新的软件包。
Ubuntu使用文本文件/etc/apt/sources.list来保存软件包的安装和更新源的地址。第三方软件安装源/etc/apt/sources.list.d目录下的.list文件。
结果如下:
# deb cdrom:[Ubuntu 14.04.5 LTS _Trusty Tahr_ - Release amd64 (20160803)]/ trusty main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted
## Major bug fix updates produced after the final release of the
## distribution.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://cn.archive.ubuntu.com/ubuntu/ trusty universe
deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://cn.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu trusty partner
# deb-src http://archive.canonical.com/ubuntu trusty partner
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu trusty main
deb-src http://extras.ubuntu.com/ubuntu trusty main
第一个字段,表示的是deb类型的安装包。
第二个字段,表示的是软件源的URL
第三个字段,定义软件包的发行版本或分类。
main: Canonical支持的开源软件,大部分都是从这个分支获取的
universe: 社区维护的开源软件
restricted: 由设备生产商专有的设备驱动软件
multiverse: 受版权或者法律保护的相关软件
security: 重要的安全更新
updates: 推荐的一般更新
proposed: 预览版本的更新
backports:无支持的更新,这种更新通常还存在一些bug
utopic表示Ubuntu版本.
22.使用“新得立”软件包管理器
安装命令:
apt-get install synaptic
可以使用下面的命令打开软件:
synaptic
管理ppa源
ppa源语法格式如下:
ppa:user/ppa-name
添加ppa源如下:
sudo add-apt-repository ppa:user/ppa-name
删除ppa源如下:
sudo add-apt-repository -r ppa:user/ppa-name
也可以通过图形界面管理,打开“系统设置”界面,单击“系统”区域的“软件和更新”按钮。
23.Deb、RPM软件包管理
查看Deb软件包
如下:
dpkg -l
-l 列出软件包的简要信息,包括状态、名称、版本、架构和简要描述。
其实可以这样写:
sudo dpkg -l | grep lib
如果要知道已安装的软件包拥有哪些文件,可以使用选项-S,命令格式如下:
dpkg -S 软件包名
示例:
sudo dpkg -S openssh-server
安装Deb软件包,命令格式如下:
sudo dpkg -i 软件包文件名
卸载Deb软件包,命令格式如下:
sudo dpkg -r 软件包名
先选 -r 删除软件包的时候会保留该软件包的配置信息。
如果要连配置信息一起删除,应使用选项-P,格式如下:
sudo dpkg -P 软件包名
RPM是RPM Package Manager(RPM 软件包管理器)的缩写,是由Red Hat公司提出的一种软件包管理标准,可用于软件包的安装、查询、更新升级、效验、卸载已安装的软件包,以及生成.rpm格式的软件包等,其功能均是通过rpm命令结合使用不同的选项来实现的。RPM软件包的名称具有特定的格式,其格式如下:
软件名称-版本号(包括主版本和次版本号).软件运行的硬件平台.rpm
例如:netconfig安装的软件包名称为netconfig-0.8.24-1.2.2.1.i386.rpm
在支持rpm的Liunx发行版中,通常使用rpm命令来安装和卸载软件。
安装rpm软件命令格式如下:
sudo rpm -ivh 软件包全路径名
卸载RPM软件包使用 -e 选项 命令格式如下:
sudo rpm -e 软件包名
查询RPM软件使用 -q 选项 命令格式如下:
sudo rpm -q 软件包名
注意ubuntu的软件包格式是.deb,不应当直接安装RPM包。
如果要安装RPM包,则要先用alien工具将.rpm转换成.deb格式。
如果没有安装aplien,可以执行下面的命令安装它。
sudo apt-get install alien
然后使用alien 将.rpm格式转换为.deb,完成后会生成一个同名的.deb文件。
sudo alien 文件名.rpm
然后再使用dpkg工具来安装它
24.run与.bin二进制包软件包安装
run程序安装包实质上是由一个安装脚本加上要安装的程序合成的一个文件,文件名后缀为.run。.run文件的安装很简单,首先为该文件增加可执行权限,可以执行以下命令:
sudo chmod a+x 文件名.run
然后在终端执行该文件即可,命令如下:
sudo ./文件名.run
要卸载使用run安装包安装的软件,需要到安装目录中查看帮助文档,通常该目录总会提供反安装脚本 uninstall,可以切换到该安装目录执行此脚本。
sudo ./uninstall
如果不提供该脚本,则会提供其他维护或卸载工具。例如:qt-opensource-linux-x64-5.4.1.run安装包安装之后,安装目录中会提供一个名为MaintenanceTool的维护工具,直接运行即可更新或卸载软件。
bin安装包与run安装包类似,也是Linux系统上的一种自执行文件。在执行.bin文件之前,也需要为文件赋予执行权限,安装与卸载过程与run安装包一样。
25.使用源码安装
如果APT、Deb软件包不能提供所需的软件,就要考虑源代码安装,获取源码包,进行编译来安装,另外源码包可以根据用户的需要队软件加以定制,有的还允许二次开发。
解压软件包
tar -jxvf file.tar.bz2
tar -zxvf file.tar.gz
选项 -j 指示具有bzip2的属性,对bzip2格式压缩和解压
选项-z 指示具有gzip的属性,对gzip格式压缩和解压
选项-x 用于解压
选项-v 表示在解压过程中显示文件
选项-f 表示使用压缩包文件名
执行configure生成编译配置文件Makefile
源码需要编译成二进制代码在进行安装。自动编译需要Makefile文件,在源码包中使用configure命令生成。多数源码包都提供一个名为configure的文件,它实际上是一个使用bash脚本编写的程序。
该脚本将扫描系统,以确保程序所需的所有库文件页已存在,并做好 文件路径及其它所需的设置工作,并创建Makefile这个文件。
为方便根据用户的实际情况生成Makefile文件以指示make命令正确编译源码,
configure通常会提供若干选项供用户选择。
configure 命令常用选项
选项 | 说明 |
---|---|
–help | 提供帮助信息 |
–prefix=PREFIX | 指定软件安装位置,默认为/usr/local |
–exec-prefix=PREFIX | 指定执行文件安装路径 |
–libcudir=DIR | 指定库文件安装路径 |
–sysconfidr=DIR | 指定配置文件安装路径 |
—includeir=DIR | 指定头文件安装路径 |
–disable-FEATURE | 关闭某属性 |
–enalbe-FEATURE | 开启某属性 |
执行make命令编译源码
make会根据Makefile文件中的设置对源码进行编译并生成可执行的二进制文件。
执行make install安装软件
make只是生成可执行文件,要将可执行文件安装到系统中,还需要执行make install命令
另外,执行make clean命令卸载软件
实例:源码安装Apache服务器
我们要用到几个东西
httpd 下载地址
apr 下载地址
apr-util 下载地址
pcre 下载地址
我的版本如下:
httpd-2.4.38.tar.gz
apr-1.6.5.tar.gz
apr-util-1.6.1.tar.gz
pcre-8.42.tar.gz
然后执行如下命令
# 我的文件在Download文件夹下
cd $HOME/Downloads/
tar -zxvf httpd-2.4.38.tar.gz
sudo mv -f httpd-2.4.38 /usr/local
tar -zxvf apr-1.6.5.tar.gz
mv apr-1.6.5 apr
sudo mv -f apr /usr/local/httpd-2.4.38/srclib/
tar -zxvf apr-util-1.6.1.tar.gz
mv apr-util-1.6.1 apr-util
sudo mv -f apr-util /usr/local/httpd-2.4.38/srclib/
tar -zxvf pcre-8.42.tar.gz
sudo mv pcre-8.42 /usr/local
cd /usr/local/pcre-8.42
sudo ./configure
make
sudo make install
cd /usr/local/httpd-2.4.38
sudo ./configure --with-included-apr
make
make install
然后就安装完成了!
26.Linux 进程 管理
Liunx系统上所有运行的任务都可以称之为一个进程,每个用户任务、每个应用程序或服务也都可以称之为进程,Ubuntu也不例外!
为了区分不同的进程,系统给每个进程都分配了一个唯一的进程标识符(进程号,简称PID)。
Liunx 的进程大体可分为一下3种类型:
交互进程:在shell下通过执行程序所产生的进程,可在前台或后台运行。
批处理进程:一个进程序列
守护进程:又称监控进程,是指哪些在后台运行,并且没有控制终端的进程,通常可以随着操作系统的启动而启动,也可以将其称为服务。
例如:
httpd是Apache服务器的守护进程。守护进程最重要的特性是后台进程,其次守护进程必须和其运行前的环境隔离开来。
查看进程
Ubuntu 使用进程控制块(Proccess Control Block ,PCB)来标识和管理进程。一个进程主要有以下参数。
PID:进程号,用于唯一标志进程
PPID:父进程号,创建某进程的上一个进程的进程号
USER:启动某一个进程的用户ID和该用户所属组的ID
STAT:进程状态(运行、等待、停止、睡眠、僵死)
PRIORITY:进程的优先级
资源占用:包括CPU、内存等资源的占用信息
ps 命令,是最基本的进程查看命令,可以确定有哪些进程正在运行,进程的状态,进程是否结束,进程是否僵死,哪些进程占用了过多的资源等。
ps 命令最常用的还是监控后台进程的工作情况,因为后台进程是不与屏幕键盘这些输入进行通信的。
基本用法如下:
ps [选项]
选项 | 作用 |
---|---|
a | 表示显示系统中所有用户的进程 |
x | 表示显示没有控制终端的进程及后台进程 |
e | 表示显示所有进程 |
r | 表示只显示正在运行的进程 |
u | 表示显示进程所有者的信息 |
f | 表示按全格式显示(列出进程间父子关系) |
l | 表示按长格式显示 |
*这些选项没有 - !
常用参数 示例:
ps aux
cs@pc-2:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.6 0.0 185384 5972 ? Ss 19:59 0:01 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 19:59 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/0:0]
root 4 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:0]
root 6 0.0 0.0 0 0 ? I< 19:59 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/0]
root 8 0.0 0.0 0 0 ? I 19:59 0:00 [rcu_sched]
root 9 0.0 0.0 0 0 ? I 19:59 0:00 [rcu_bh]
root 10 0.0 0.0 0 0 ? S 19:59 0:00 [migration/0]
root 11 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/0]
root 13 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/1]
root 14 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/1]
root 15 0.0 0.0 0 0 ? S 19:59 0:00 [migration/1]
root 16 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/1]
root 17 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/1:0]
root 18 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/1:0H]
root 19 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/2]
root 20 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/2]
root 21 0.0 0.0 0 0 ? S 19:59 0:00 [migration/2]
root 22 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/2]
root 23 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/2:0]
root 24 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/2:0H]
root 25 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/3]
root 26 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/3]
root 27 0.0 0.0 0 0 ? S 19:59 0:00 [migration/3]
root 28 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/3]
root 29 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/3:0]
root 30 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/3:0H]
root 31 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/4]
root 32 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/4]
root 33 0.0 0.0 0 0 ? S 19:59 0:00 [migration/4]
root 34 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/4]
root 35 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/4:0]
root 36 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/4:0H]
root 37 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/5]
root 38 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/5]
root 39 0.0 0.0 0 0 ? S 19:59 0:00 [migration/5]
root 40 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/5]
root 41 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/5:0]
root 42 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/5:0H]
root 43 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/6]
root 44 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/6]
root 45 0.0 0.0 0 0 ? S 19:59 0:00 [migration/6]
root 46 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/6]
root 47 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/6:0]
root 48 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/6:0H]
root 49 0.0 0.0 0 0 ? S 19:59 0:00 [cpuhp/7]
root 50 0.0 0.0 0 0 ? S 19:59 0:00 [watchdog/7]
root 51 0.0 0.0 0 0 ? S 19:59 0:00 [migration/7]
root 52 0.0 0.0 0 0 ? S 19:59 0:00 [ksoftirqd/7]
root 53 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/7:0]
root 54 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/7:0H]
root 55 0.0 0.0 0 0 ? S 19:59 0:00 [kdevtmpfs]
root 56 0.0 0.0 0 0 ? I< 19:59 0:00 [netns]
root 57 0.0 0.0 0 0 ? S 19:59 0:00 [rcu_tasks_kthre]
root 58 0.0 0.0 0 0 ? S 19:59 0:00 [kauditd]
root 59 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/0:1]
root 60 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/1:1]
root 61 0.0 0.0 0 0 ? S 19:59 0:00 [khungtaskd]
root 62 0.0 0.0 0 0 ? S 19:59 0:00 [oom_reaper]
root 63 0.0 0.0 0 0 ? I< 19:59 0:00 [writeback]
root 64 0.0 0.0 0 0 ? S 19:59 0:00 [kcompactd0]
root 65 0.0 0.0 0 0 ? SN 19:59 0:00 [ksmd]
root 66 0.0 0.0 0 0 ? SN 19:59 0:00 [khugepaged]
root 67 0.0 0.0 0 0 ? I< 19:59 0:00 [crypto]
root 68 0.0 0.0 0 0 ? I< 19:59 0:00 [kintegrityd]
root 69 0.0 0.0 0 0 ? I< 19:59 0:00 [kblockd]
root 70 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/3:1]
root 71 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/4:1]
root 72 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/5:1]
root 73 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/6:1]
root 74 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/7:1]
root 75 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/2:1]
root 76 0.0 0.0 0 0 ? I< 19:59 0:00 [ata_sff]
root 77 0.0 0.0 0 0 ? I< 19:59 0:00 [md]
root 78 0.0 0.0 0 0 ? I< 19:59 0:00 [edac-poller]
root 79 0.0 0.0 0 0 ? I< 19:59 0:00 [devfreq_wq]
root 80 0.0 0.0 0 0 ? I< 19:59 0:00 [watchdogd]
root 81 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:1]
root 83 0.0 0.0 0 0 ? S 19:59 0:00 [kswapd0]
root 84 0.0 0.0 0 0 ? S 19:59 0:00 [ecryptfs-kthrea]
root 126 0.0 0.0 0 0 ? I< 19:59 0:00 [kthrotld]
root 127 0.0 0.0 0 0 ? I< 19:59 0:00 [acpi_thermal_pm]
root 131 0.0 0.0 0 0 ? I< 19:59 0:00 [ipv6_addrconf]
root 132 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/2:2]
root 141 0.0 0.0 0 0 ? I< 19:59 0:00 [kstrp]
root 162 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:2]
root 163 0.0 0.0 0 0 ? I< 19:59 0:00 [charger_manager]
root 164 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/5:2]
root 209 0.0 0.0 0 0 ? S 19:59 0:00 [scsi_eh_0]
root 210 0.0 0.0 0 0 ? I< 19:59 0:00 [scsi_tmf_0]
root 211 0.0 0.0 0 0 ? S 19:59 0:00 [scsi_eh_1]
root 212 0.0 0.0 0 0 ? I< 19:59 0:00 [scsi_tmf_1]
root 213 0.0 0.0 0 0 ? S 19:59 0:00 [scsi_eh_2]
root 214 0.0 0.0 0 0 ? I< 19:59 0:00 [scsi_tmf_2]
root 215 0.0 0.0 0 0 ? S 19:59 0:00 [scsi_eh_3]
root 216 0.0 0.0 0 0 ? I< 19:59 0:00 [scsi_tmf_3]
root 217 0.0 0.0 0 0 ? S 19:59 0:00 [scsi_eh_4]
root 218 0.0 0.0 0 0 ? I< 19:59 0:00 [scsi_tmf_4]
root 219 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:3]
root 220 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:4]
root 221 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:5]
root 223 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/u16:6]
root 227 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/6:1H]
root 228 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/u17:0]
root 229 0.0 0.0 0 0 ? S 19:59 0:00 [i915/signal:0]
root 230 0.0 0.0 0 0 ? S 19:59 0:00 [i915/signal:1]
root 231 0.0 0.0 0 0 ? S 19:59 0:00 [i915/signal:2]
root 232 0.0 0.0 0 0 ? S 19:59 0:00 [i915/signal:4]
root 233 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/6:2]
root 255 0.0 0.0 0 0 ? S 19:59 0:00 [jbd2/sda3-8]
root 256 0.0 0.0 0 0 ? I< 19:59 0:00 [ext4-rsv-conver]
root 282 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/7:1H]
root 283 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/1:1H]
root 291 0.0 0.0 35396 4404 ? Ss 19:59 0:00 /lib/systemd/systemd-journald
root 297 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/7:2]
root 299 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/6:3]
root 302 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/0:1H]
root 303 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/0:2]
root 317 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/3:2]
root 318 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/2:1H]
root 322 0.0 0.0 45864 4688 ? Ss 19:59 0:00 /lib/systemd/systemd-udevd
root 363 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/4:2]
root 390 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/1:2]
root 397 0.0 0.0 0 0 ? S 19:59 0:00 [irq/126-mei_me]
root 481 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/3:3]
root 497 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/3:1H]
root 533 0.0 0.0 0 0 ? I 19:59 0:00 [kworker/3:4]
root 534 0.0 0.0 0 0 ? I< 19:59 0:00 [kworker/5:1H]
root 541 0.0 0.0 0 0 ? S 20:00 0:00 [nvidia-modeset]
root 657 0.0 0.0 0 0 ? I< 20:00 0:00 [kworker/4:1H]
systemd+ 696 0.0 0.0 102384 2564 ? Ssl 20:00 0:00 /lib/systemd/systemd-timesyncd
root 772 0.0 0.0 36076 2984 ? Ss 20:00 0:00 /usr/sbin/cron -f
root 775 0.0 0.0 173500 8556 ? Ssl 20:00 0:00 /usr/sbin/thermald --no-daemon --dbus-enable
root 776 0.0 0.1 364716 25240 ? Ssl 20:00 0:00 /usr/lib/snapd/snapd
syslog 778 0.0 0.0 256392 3408 ? Ssl 20:00 0:00 /usr/sbin/rsyslogd -n
avahi 780 0.0 0.0 44784 3304 ? Ss 20:00 0:00 avahi-daemon: running [pc-2.local]
message+ 781 0.0 0.0 44248 5096 ? Ss 20:00 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
avahi 829 0.0 0.0 44784 340 ? S 20:00 0:00 avahi-daemon: chroot helper
root 830 0.0 0.0 456476 16208 ? Ssl 20:00 0:00 /usr/sbin/NetworkManager --no-daemon
root 831 0.0 0.0 28628 3124 ? Ss 20:00 0:00 /lib/systemd/systemd-logind
root 837 0.0 0.0 4396 1228 ? Ss 20:00 0:00 /usr/sbin/acpid
root 839 0.0 0.0 283348 6740 ? Ssl 20:00 0:00 /usr/lib/accountsservice/accounts-daemon
root 846 0.0 0.0 100300 7572 ? Ss 20:00 0:00 /usr/sbin/cupsd -l
root 850 0.0 0.0 274816 9320 ? Ssl 20:00 0:00 /usr/sbin/cups-browsed
root 925 0.0 0.0 276648 6064 ? Ssl 20:00 0:00 /usr/sbin/lightdm
root 933 0.0 0.0 19472 248 ? Ss 20:00 0:00 /usr/sbin/irqbalance --pid=/var/run/irqbalance.pid
lp 939 0.0 0.0 81244 5592 ? S 20:00 0:00 /usr/lib/cups/notifier/dbus dbus://
lp 940 0.0 0.0 81244 5596 ? S 20:00 0:00 /usr/lib/cups/notifier/dbus dbus://
lp 941 0.0 0.0 81244 5552 ? S 20:00 0:00 /usr/lib/cups/notifier/dbus dbus://
lp 942 0.0 0.0 81244 5592 ? S 20:00 0:00 /usr/lib/cups/notifier/dbus dbus://
lp 943 0.0 0.0 81244 5596 ? S 20:00 0:00 /usr/lib/cups/notifier/dbus dbus://
root 961 0.0 0.0 65512 5744 ? Ss 20:00 0:00 /usr/sbin/sshd -D
root 968 0.0 0.0 289348 8912 ? Ssl 20:00 0:00 /usr/lib/policykit-1/polkitd --no-debug
root 998 0.8 0.3 380740 60768 tty7 Ssl+ 20:00 0:01 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswi
root 1010 0.0 0.0 228268 6556 ? Sl 20:00 0:00 lightdm --session-child 12 15
cs 1015 0.0 0.0 45280 4656 ? Ss 20:00 0:00 /lib/systemd/systemd --user
cs 1016 0.0 0.0 63464 2080 ? S 20:00 0:00 (sd-pam)
cs 1019 0.0 0.0 53708 4940 ? Ss 20:00 0:00 /sbin/upstart --user
root 1067 0.0 0.0 16128 3700 ? S 20:00 0:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /var/run/dhclient-enp0s31f6.p
cs 1102 0.0 0.0 39996 276 ? S 20:00 0:00 upstart-udev-bridge --daemon --user
nobody 1110 0.0 0.0 59936 4128 ? S 20:00 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/r
cs 1117 0.1 0.0 43680 4044 ? Ss 20:00 0:00 dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-YA5xN3ielC
cs 1142 0.0 0.0 93412 8928 ? Ss 20:00 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge
cs 1190 0.0 0.0 39900 324 ? S 20:00 0:00 upstart-dbus-bridge --daemon --session --user --bus-name session
cs 1191 0.0 0.0 48524 2036 ? S 20:00 0:00 upstart-file-bridge --daemon --user
cs 1193 0.0 0.0 39900 336 ? S 20:00 0:00 upstart-dbus-bridge --daemon --system --user --bus-name system
cs 1194 0.0 0.0 212560 7064 ? SLl 20:00 0:00 gnome-keyring-daemon --start --components ssh
cs 1209 0.1 0.5 575980 83140 ? Sl 20:00 0:00 /usr/bin/fcitx
cs 1215 0.0 0.0 43028 3280 ? Ss 20:00 0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --config-file /usr/share/fcitx/dbus/d
cs 1219 0.0 0.0 27636 236 ? SN 20:00 0:00 /usr/bin/fcitx-dbus-watcher unix:abstract=/tmp/dbus-XuPKCFIYmR,guid=6658bb8c5d44d86a386dc0e05c864
cs 1225 0.0 0.1 445800 22136 ? Sl 20:00 0:00 /usr/lib/x86_64-linux-gnu/notify-osd
cs 1325 0.0 0.1 530960 27052 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/bamf/bamfdaemon
cs 1358 0.0 0.0 173748 720 ? Ss 20:00 0:00 gpg-agent --homedir /home/cs/.gnupg --use-standard-socket --daemon
cs 1367 0.0 0.0 338004 5708 ? Sl 20:00 0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
cs 1376 0.0 0.0 42896 3820 ? S 20:00 0:00 /usr/bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
cs 1379 0.0 0.0 206864 6368 ? Sl 20:00 0:00 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
cs 1385 0.0 0.0 281748 6620 ? Sl 20:00 0:00 /usr/lib/gvfs/gvfsd
cs 1390 0.0 0.0 406864 4876 ? Sl 20:00 0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
cs 1415 0.0 0.2 601372 41572 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/hud/hud-service
cs 1417 0.0 0.1 918528 30352 ? Ssl 20:00 0:00 /usr/lib/unity-settings-daemon/unity-settings-daemon
cs 1425 0.0 0.0 558292 14936 ? Ssl 20:00 0:00 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
cs 1436 0.0 0.1 570128 29408 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/unity/unity-panel-service
cs 1474 0.0 0.0 178796 4768 ? Sl 20:00 0:00 /usr/lib/dconf/dconf-service
root 1478 0.0 0.0 354396 10124 ? Ssl 20:00 0:00 /usr/lib/upower/upowerd
cs 1480 0.0 0.0 361772 7592 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service
cs 1481 0.0 0.0 340716 5684 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-bluetooth/indicator-bluetooth-service
cs 1482 0.0 0.0 501848 8264 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-power/indicator-power-service
cs 1483 0.0 0.1 1240476 16908 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-datetime/indicator-datetime-service
cs 1484 0.0 0.1 657088 28180 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-keyboard/indicator-keyboard-service --use-gtk
cs 1485 0.0 0.0 671020 11496 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-sound/indicator-sound-service
cs 1486 0.0 0.1 555020 24436 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-printers/indicator-printers-service
cs 1487 0.0 0.0 894668 6584 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-session/indicator-session-service
cs 1488 0.0 0.0 403148 13040 ? Ssl 20:00 0:00 /usr/lib/x86_64-linux-gnu/indicator-application/indicator-application-service
cs 1556 1.0 0.6 1368796 104476 ? Ssl 20:00 0:01 compiz
colord 1569 0.0 0.0 308468 11048 ? Ssl 20:00 0:00 /usr/lib/colord/colord
cs 1574 0.0 0.0 516340 12104 ? S
参数解析
USER | 表示进程的所有者 |
---|---|
PID | 是进程 |
%CPU | 表示占用CPU的百分比 |
%MEM | 表示占用内存的百分比 |
VSZ | 表示占用虚拟内存的数量 |
RSS | 表示驻留内存的数量 |
TTY | 表示进程的控制终端(值“?”说明该进程与控制端没有关联) |
STAT | 表示进程的运行状态(R表示就绪状态,S是可以中断的休眠状态,D是不可中断的休眠状态,T是暂停执行,Z表示不存在但暂时无法消除,W表示无足够内存页面可分配,<表示高优先级,N表示低优先级,L表示内存页面被锁定,s表示创建会话的进程,I表示多线程进程,+表示是一个前台进程组) |
START | 是进程开始的时间 |
TIME | 是进程已经执行的时间 |
COMMAND | 是进程对应的程序名称和运行参数 |
*通常情况下系统中运行的进程很多,可使用管道操作符和less(或 more )命令来查看。
ps aux | less
还可以使用grep 命令查找特定进程。若要查看各进程的继承关系,使用pstree命令
ps aux | pstree | less
top 命令,用于动态显示系统进程信息,可以每隔一段时间刷新当前状态,还提供一组交互式命令用于进程的监控。
命令如下:
top [选项]
参数
选项 | 作用 |
---|---|
-d | 指定每两次屏幕信息刷新之间的时间间隔,默认为5s |
-s | 表示top命令在安全模式中运行,不能使用交互命令 |
-c | 表示显示整个命令行,而不是只显示命令名 |
*如果是在前台执行该命令,它将独占前台,直到用户终止该程序为止。
一些交互命令
按空格刷新显示
按ctrl+l键擦除并且重写
小示例:
top
输出如下:
cy@cy:~$ top
top - 21:01:23 up 6 min, 1 user, load average: 0.00, 0.17, 0.12
Tasks: 165 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16285788 total, 15561564 free, 170324 used, 553900 buff/cache
KiB Swap: 1999868 total, 1999868 free, 0 used. 15797716 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2089 cy 20 0 43540 4008 3388 R 100.0 0.0 0:00.07 top
1 root 20 0 185428 6084 4040 S 0.0 0.0 0:01.44 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 I 0.0 0.0 0:00.03 kworker/u16:0
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
8 root 20 0 0 0 0 I 0.0 0.0 0:00.04 rcu_sched
9 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
14 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
15 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
18 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/2
20 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
21 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/2
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/2
24 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/2:0H
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/3
26 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
27 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/3
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/3
参数解析
参数 | 作用 |
---|---|
PID | 进程号 |
USER | 所有者 |
PR | 优先级 |
NI | 表示nicc值(负值表示高优先级,正值表示低优先级) |
VIRT | 表示进程使用的虚拟内存总量(单位kb) |
RES | 表示进程使用的、未被换出的物理内存大小(kb) |
SHR | 表示共享内存大小 |
S | 表示进程状态 |
%CPU | CPU使用率 |
%MEM | 内存使用率 |
TIME+ | 表示进程使用的CPU时间总计(单位1/100秒) |
COMMAND | 是进程对应的程序名称和运行参数 |
27.查看当前目录下各个文件及目录占用空间大小
du -sh *
du -sh anaconda3
28.文件查找
find命令用于在硬盘上查找文件,格式如下:
find [选项] 文件名
-name name 查找包含该名字的文件
-amin n 查找n分钟以前被访问过的所有文件
-atime n 查找n天以前被访问过的所有文件
例:
find / -name cuda
这个命令表示在 /(根目录下) 查找 名字包含 cuda的文件和文件夹
29.查看文件详细信息
使用stat
命令
stat repository/
输出文件的状态
文件:repository/
大小:4096 块:8 IO 块:4096 目录
设备:807h/2055d Inode:9308546 硬链接:27
权限:(0775/drwxrwxr-x) Uid:( 1000/ zhw) Gid:( 1000/ zhw)
最近访问:2019-04-09 17:58:59.536270356 +0800
最近更改:2019-04-09 09:01:24.969602992 +0800
最近改动:2019-04-09 09:01:24.969602992 +0800
创建时间:-
打印文件系统状态
stat -f repository/
输出
文件:"repository/"
ID:cc944d2916639f3 文件名长度:255 类型:ext2/ext3
块大小:4096 基本块大小:4096
块:总计:100338254 空闲:98476367 可用:93362025
Inodes: 总计:25559040 空闲:25451881
30.显示系统整体文件系统的磁盘使用情况
df -h
输出
文件系统 容量 已用 可用 已用% 挂载点
udev 1.9G 0 1.9G 0% /dev
tmpfs 391M 1.6M 389M 1% /run
/dev/sda4 46G 6.2G 38G 15% /
tmpfs 2.0G 7.5M 1.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop1 4.2M 4.2M 0 100% /snap/gnome-calculator/352
/dev/loop3 3.8M 3.8M 0 100% /snap/gnome-system-monitor/70
/dev/loop0 15M 15M 0 100% /snap/gnome-logs/45
/dev/loop13 35M 35M 0 100% /snap/gtk-common-themes/818
/dev/loop5 3.8M 3.8M 0 100% /snap/gnome-system-monitor/57
/dev/loop2 15M 15M 0 100% /snap/gnome-characters/206
/dev/loop4 1.0M 1.0M 0 100% /snap/gnome-logs/57
/dev/loop8 13M 13M 0 100% /snap/gnome-characters/139
/dev/loop7 90M 90M 0 100% /snap/core/6673
/dev/loop9 2.3M 2.3M 0 100% /snap/gnome-calculator/260
/dev/loop10 141M 141M 0 100% /snap/gnome-3-26-1604/74
/dev/loop14 91M 91M 0 100% /snap/core/6350
/dev/loop15 54M 54M 0 100% /snap/core18/782
/dev/loop11 144M 144M 0 100% /snap/gnome-3-28-1804/23
/dev/loop6 141M 141M 0 100% /snap/gnome-3-26-1604/82
/dev/loop12 36M 36M 0 100% /snap/gtk-common-themes/1198
/dev/sda3 946M 111M 771M 13% /boot
/dev/sda7 383G 7.2G 357G 2% /home
/dev/sda6 9.2G 37M 8.6G 1% /tmp
/dev/sda1 300M 6.2M 294M 3% /boot/efi
tmpfs 391M 24K 391M 1% /run/user/1000
31.Linux的which命令 ,可以在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
查找文件位置、路径
zhw@zhw:~$ which pwd
/bin/pwd
显示命令别名
zhw@zhw:~$ which ls -l
/bin/ls
特殊命令
zhw@zhw:~$ which cd
zhw@zhw:~$
像 cd 命令这种bash内建命令,which命令是搜索不到的。
which命令只能搜索 PATH目录下的可执行命令,并不能识别bash内部的命令,因此,使用 which cd 会报错误信息。
32.显示自身的用户名称,本指令相当于执行"id -un"指令
zhw@zhw:~$ whoami
zhw
33.netstatm命令
主要参数及介绍如下:
-a | –all 显示所有连线中的Socket |
-A<网络类型> | –<网络类型> 列出该网络类型连线中的相关地址 |
-c | –continuous 持续列出网络状态 |
-C | –cache 显示路由器配置的快取信息 |
-e | –extend 显示网络其他相关信息 |
-F | –fib 显示FIB |
-g | –groups 显示多重广播功能群组组员名单 |
-h | –help 在线帮助 |
-i | –interfaces 显示网络界面信息表单 |
-l | –listening 显示监控中的服务器的Socket |
-M | –masquerade 显示伪装的网络连线 |
-n | –numeric 直接使用IP地址,而不通过域名服务器 |
-N | –netlink 或 --symbolic 显示网络硬件外围设备的符号连接名称 |
-o | –timers 显示计时器 |
-p | –programs 显示正在使用Socket的程序识别码和程序名称 |
-r | –route 显示Routing Table |
-s | –statistice 显示网络工作信息统计表 |
-t | –tcp 显示TCP传输协议的连线状况 |
-u | –udp 显示UDP传输协议的连线状况 |
-v | –verbose 显示指令执行过程 |
-V | –version 显示版本信息 |
-w | –raw 显示RAW传输协议的连线状况 |
-x | –unix 此参数的效果和指定"-A unix"参数相同 |
–ip | –inet 此参数的效果和指定"-A inet"参数相同 |
套接口类型:
-t | TCP |
-u | UDP |
-raw | RAW类型 |
–unix | UNIX域类型 |
–ax25 | AX25类型 |
–ipx | ipx类型 |
–netrom | netrom类型 |
状态说明:
SYN-SENT | 再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了) |
SYN-RECEIVED | 再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了) |
ESTABLISHED | 代表一个打开的连接 |
FIN-WAIT-1 | 等待远程TCP连接中断请求,或先前的连接中断请求的确认 |
FIN-WAIT-2 | 从远程TCP等待连接中断请求 |
CLOSE-WAIT | 等待从本地用户发来的连接中断请求 |
CLOSING | 等待远程TCP对连接中断的确认 |
LAST-ACK | 等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击) |
TIME-WAIT | 等待足够的时间以确保远程TCP接收到连接中断请求的确认 |
CLOSED | 没有任何连接状态 |
显示主机所有端口(给出部分输出)
zhw@zhw:~$ netstat -a
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 localhost:6011 0.0.0.0:* LISTEN
tcp 0 208 zhw:ssh 10.1.10.223:12602 ESTABLISHED
tcp6 0 0 [::]:mysql [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 ip6-localhost:6011 [::]:* LISTEN
tcp6 0 0 [::]:8828 [::]:* LISTEN
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 0.0.0.0:39067 0.0.0.0:*
udp 0 0 0.0.0.0:39406 0.0.0.0:*
udp 0 0 0.0.0.0:ipp 0.0.0.0:*
udp 0 0 0.0.0.0:mdns 0.0.0.0:*
udp6 0 0 ip6-localhost:59186 ip6-localhost:43584 ESTABLISHED
udp6 0 0 [::]:55404 [::]:*
udp6 0 0 ip6-localhost:43584 ip6-localhost:59186 ESTABLISHED
udp6 0 0 [::]:39844 [::]:*
udp6 0 0 [::]:mdns [::]:*
raw 0 0 0.0.0.0:icmp 0.0.0.0:* 7
raw6 0 0 [::]:ipv6-icmp [::]:* 7
raw6 0 0 [::]:ipv6-icmp [::]:* 7
活跃的UNIX域套接字 (服务器和已建立连接的)
Proto RefCnt Flags Type State I-Node 路径
unix 2 [ ACC ] 流 LISTENING 18865 /run/uuidd/request
unix 2 [ ACC ] 流 LISTENING 26709 /tmp/ssh-j0F3NB5LIHu2/agent.1138
unix 2 [ ACC ] 流 LISTENING 25397 /tmp/.X11-unix/X0
unix 2 [ ACC ] 流 LISTENING 18869 /run/acpid.socket
unix 2 [ ACC ] 流 LISTENING 26939 /tmp/.ICE-unix/1138
unix 2 [ ] 数据报 25027 /run/user/1000/systemd/notify
unix 2 [ ACC ] SEQPACKET LISTENING 1002 /run/udev/control
使用 –a 参数可以列出主机所有端口
显示UDP连接状况
zhw@zhw:~$ netstat -nu
激活Internet连接 (w/o 服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp6 0 0 ::1:59186 ::1:43584 ESTABLISHED
udp6 0 0 ::1:43584 ::1:59186 ESTABLISHED
显示UDP端口使用情况
zhw@zhw:~$ netstat -apu
(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 localhost:domain 0.0.0.0:* -
udp 0 0 0.0.0.0:bootpc 0.0.0.0:* -
udp 0 0 0.0.0.0:39067 0.0.0.0:* -
udp 0 0 0.0.0.0:39406 0.0.0.0:* -
udp 0 0 0.0.0.0:ipp 0.0.0.0:* -
udp 0 0 0.0.0.0:mdns 0.0.0.0:* -
udp6 0 0 ip6-localhost:59186 ip6-localhost:43584 ESTABLISHED -
udp6 0 0 [::]:55404 [::]:* -
udp6 0 0 ip6-localhost:43584 ip6-localhost:59186 ESTABLISHED -
udp6 0 0 [::]:39844 [::]:* -
udp6 0 0 [::]:mdns [::]:* -
显示网卡列表信息
zhw@zhw:~$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
enp5s0 1500 7345 0 0 0 9600 0 0 0 BMRU
lo 65536 487 0 0 0 487 0 0 0 LRU
显示所有TCP端口
zhw@zhw:~$ netstat -at
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 localhost:6011 0.0.0.0:* LISTEN
tcp 0 208 zhw:ssh 10.1.10.223:12602 ESTABLISHED
tcp6 0 0 [::]:mysql [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 ip6-localhost:6011 [::]:* LISTEN
tcp6 0 0 [::]:8828 [::]:* LISTEN
显示所有UTP端口
zhw@zhw:~$ netstat -au
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 0.0.0.0:39067 0.0.0.0:*
udp 0 0 0.0.0.0:39406 0.0.0.0:*
udp 0 0 0.0.0.0:ipp 0.0.0.0:*
udp 0 0 0.0.0.0:mdns 0.0.0.0:*
udp6 0 0 ip6-localhost:59186 ip6-localhost:43584 ESTABLISHED
udp6 0 0 [::]:55404 [::]:*
udp6 0 0 ip6-localhost:43584 ip6-localhost:59186 ESTABLISHED
udp6 0 0 [::]:39844 [::]:*
udp6 0 0 [::]:mdns [::]:*
找出运行在指定端口的进程
zhw@zhw:~$ sudo netstat -anpt | grep ssh
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 853/sshd
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 3199/sshd: zhw@pts/
tcp 0 36 10.1.7.163:22 10.1.10.223:12602 ESTABLISHED 3134/sshd: zhw [pri
tcp6 0 0 :::22 :::* LISTEN 853/sshd
tcp6 0 0 ::1:6011 :::* LISTEN 3199/sshd: zhw@pts/
vi/vim使用教程
vi/vim使用教程(菜鸟教程)
Ubuntu终端快捷方式
ubuntu 挂载U盘
Linux命令速查手册
Ubuntu Nano命令
ubuntu 是严格区分大小!
附:Lniux 命令大全|菜鸟教程