Linux-玩转数据-Linux基础

目录

  • 远程登陆
  • linux的目录结构
  • linux命令
    • Linux常用命令介绍
    • Linux 命令嵌套
    • Linux中的正则
    • Linux进程管理
    • Linux系统管理命令
    • Linux权限管理命令
    • Linux文件归档管理
    • Linux软件管理
    • Linux磁盘分区查看

远程登陆

Linux下远程登录另一台Linux服务器

 $ssh  远程主机上的用户名@远程主机的ip地址或主机名
 $ssh   IP地址

Windows下利用SSH工具登录一台linux服务器
登录工具1: SecureCRT.exe
登录工具2:xshell

linux的目录结构

Linux文件系统是呈树形结构,了解Linux文件系统的目录结构,对于我们驾驭Linux还是有必要的。

目录 说明
/ Linux文件系统的入口,也是处于最高一级的目录
/bin 基本系统所需要的命令。功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令
/boot 内核和加载内核所需要的文件。一般情况下,GRUB系统引导管理器也位于这个目录
/dev 设备文件存储目录,比如终端、磁盘等
/etc 所有的系统配置文件
/home 普通用户家目录的默认存放目录
/lib 库文件和内核模块所存放的目录
/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如u盘、CDROM/DVD自动挂载后,也会在这个目录中创建一个目录
/mnt 临时文件系统的挂载点目录
/opt 第三方软件的存放目录
/root Linux超级权限用户root的家目录
/sbin 基本的系统维护命令,只能由超级用户使用
/srv 该目录存放一些服务启动之后需要提取的数据
/tmp 临时文件目录
/usr 存放用户使用系统命令和应用程序等信息,比如命令、帮助文件等
/var 存放经常变动的数据,比如日志、邮件等

linux命令

  • 命令及参数区分大小写
  • 程序可否执行与扩展名无关
  • 使用tab键来补全命令

Linux常用命令介绍

命 令 说明
pwd 查看当前工作目录
ls [参数] [目录名] 显示文件,-a:显示所有文件,包括隐藏文件(以.开头的文件),-l:以长格式显示,-t:按修改时间先后显示,-R:显示目录及下级子目录结构(递归),-m: 横向输出文件名,并以“,”作分格符, -S: 以文件大小排序
cd [目录] 改变当前所在路径, . 当前工作目录,… 父目录,~ 用户家目录,- 上个工作目录
用颜色代表不同文件 白色:普通文件,红色:压缩文件,蓝色:目录文件,浅蓝色:链接文件,黄色:设备文件(/dev),绿色:可执行文件(/bin、/sbin),粉红色:图片文件
mkdir [参数] {目录名} 创建目录,参数: -p 可以一次性创建整个目录树
rmdir [参数] {目录名} 删除目录,如果目录是空的,此命令会删除他们,如果目录中有内容,则会产生错误信息且不能删除目录,但是他会继续删除其余的空目录。注意,只包括一个子目录的目录不是空的
rm [参数] {文件} 删除文件及路径, 参数: -r 删除整个目录树, -f 强制执行
tree [参数] {文件} 查看目录树,参数: -a 不隐藏任何以.字符开始的条目,-d 只显示目录不显示文件, -f 每个文件都显示路径,-t 根据最后修改时间排序, -L n 只显示n层目录 (n为数字)
touch [参数] {文件} 创建空文件和更改时间戳,参数: -d 更改时间戳为定义值 (后面加年月日,格式:20101212)
cp [参数] {原文件…} {目标文件} 复制目录,参数: -r 递归执行 (可复制目录树)
mv [参数] {原文件} {目标文件} 把原文件更名为目标文件,把一个或多个文件同时移动到目标文件中
cat [option] filename 命令显示文件时会同时显示所有内容。大型文件在屏幕上一晃而过,难以阅读。所以他比较适合小于一屏的文件
tac 从最后一行开始显示
file [option] filename 显示文件类型
more 一页一页的显示档案内容 :空格键 (space):代表向下翻一页; Enter:代表向下翻『一行』; /字符串:代表在这个显示的内容当中,向下搜索『字符串』这个关键词; :f :立刻显示出文件名以及目前显示的行数; h 帮助b 或 [ctrl]-b :代表往回翻页 q:退出
less less 与 more 类似,less可以往前翻页! :空格键:向下翻一页; [pagedown]:向下翻一页; [pageup]:向上翻一页; /字符串:向下搜索『字符串』; ?字符串 :向上搜索『字符串』; n:重复前一个搜索 N:反向的重复前一个搜索h:帮助;q:退出
head [options] {file…} 显示文件开始几行,参数 : –n number查看前几行的值
tail [options] {file…} 显示文件后几行值,参数 : –n number 查看后几行的值,–f 一直监视
man [参数] [查询名] 帮助文档,/ 来查找,q退出
其他获得帮助的方法 –help,-h,info 命令,help 内置命令
shutdown [参数] 时间 [警告信息] 关机, -t sec :送出警告信息和删除信息之间要延迟多少秒,- k:并不真正关机而只是发出警告信息给所有用户,- r:关机后立即重新启动,- h:关机后停止系统
find [PATH] [option] [action] 时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 , -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更改过内容的文件,-mtime +n :列出在 n 天之前(不含 n 天本身)被改动过内容的文件; -mtime -n :列出在 n 天之内(含n 天本身)被更改过内容的文件。 -newer file :file 为一个存在参照物,列出比 file 还要新的文件
history 查看命令历史
管道 grep -c 只输出匹配行的计数,-i 不区分大小写(只适用于单字符),-h 查询多文件时不显示文件名,-l 查询多文件时只输出包含匹配字符的文件名,-n 显示匹配行及行号,-s 不显示不存在或无匹配文本的错误信息,-v 显示不包含匹配文本的所有行
sort -r 反向排序
cut -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。-c :以字符为单位进行分割。-d :自定义分隔符,默认为制表符。-f :与-d一起使用,指定显示哪个区域。-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的,范围之内,该字符将被写出;否则,该字符将被排除
uniq –c 计数
wc –l 统计多少行
dirname 取出指定地址的上级目录
basename 为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来
hostname 显式主机名或 [/etc/hosts]文件中有显示
reboot 重启
halt 停止,黑屏
poweroff 关机
shutdown 关机

Linux 命令嵌套

$>echo `cat b.txt`	//命令解析,无法嵌套
$>$(... $())		//支持命令的嵌套

访问文件(夹)物理位置

$>cd -P /t			//进入/t的物理位置
$>pwd -P			//显式当前目录的物理位置

访问环境变量

echo ${PATH}				//ok
echo $PATH					//ok
echo "$PATH"				//ok
echo '$PATH'				//''原样输出

export定义环境变量,只在session中有效

$>export name=${PATH}:tom
$>export name=${Var1:-${Var2}}	//设置name为${Var1}的值,Var1没有设置为${Var2}的值。

命令执行过程

$?		//命令的返回值存储变量,0:成功 1:失败。
$#		//参数个数
$1		//第几个参数
$0		//当前脚本(命令)名称
$@		//取出所有参数
shift	//参数左移
${a/b/c}	//

if 语法:
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]… [ else COMMANDS; ] fi

if [ $# -lt 3 ]; then xx ; fi
3,5

使用for循环输出1 - 100个数
for NAME [in WORDS … ] ; do COMMANDS; done

for x in a b c d ; do echo $x ; done ;

命令组合

a && b ;		//a成功后执行b,
a || b ;		//a失败后之后b;
a ; b			//无逻辑关系,改变目录
(a ; b)			//无逻辑关系,不改变目录

netcat
[server]

nc -lk 8888		//-l : 监听
				//-k : 接受多个连接
[client]
nc ip 8888 ;	//客户端指定服务器端

启动服务器端

nc -l -p 8888 -s 0.0.0.0		//通配ip

通过nc实现文件传输

0.使用重定向(输入|输出)。
1.server(centos)
	nc -l 8888 > a.txt ;

查看端口

netstat -anop			//显式网络情况
				//-a : 所有socket
				//-n : 显式数字地址
				//-p : pid
				//-o : timer

linux 使用 rz 和 sz 命令
• linux系统
• root权限
• lrzsz安装包
①. 安装
编译安装
root 账号登陆后,依次执行以下命令:

tar zxvf lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
./configure
make
make install

上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz:

cd /usr/bin
ln -s /usr/local/bin/lrz rz
ln -s /usr/local/bin/lsz sz

②. 使用说明
sz命令发送文件到本地:

# sz filename

rz命令本地上传文件到服务器:

# rz

执行该命令后,在弹出框中选择要上传的文件即可。

③. 默认的 sz 到本地的目录路径
C:\Users[Administrator]\AppData\Roaming\NetSarang\Xshell\Received Files

Linux中的正则

基本正则表达式中元字符的意义如下:

字符 意义
* 匹配*前面的那一个字符的0次或多次
. 匹配任意一个字符(只匹配一个,可以是空格)
^ 匹配行首,行首的字符序列必须是^后的字符序列,该符号放在[]里面时,不再表示匹配行首,而是取反的意思
$ 匹配行尾,行尾的字符序列必须是该符号前的字符序列,特殊的 ^$ 匹配一个空行, ^.$ 匹配只有一个字符的空行
[] 匹配字符集合中的任意一个字符(只匹配一个)
\ 用于转义元字符,使之成为普通字符
\<\> 用于精确匹配
\{n\} 匹配前面字符的n次
\{n,\} 匹配前面字符的至少n次
\{n,m\} 匹配前面字符的n-m次,至少n次,至多m次

Linux进程管理

进程分类
进程一般分为交互进程、批处理进程和守护进程三类。

进程的属性
进程ID(PID):是唯一的数值,用来区分进程;
父进程和父进程的ID(PPID);
启动进程的用户ID(UID)和所归属的组(GID);
进程状态:状态分为运行R、休眠S、僵尸Z;

ps 监视进程工具
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用top工具;
ps 的参数说明
ps 提供了很多的选项参数,常用的有以下几个;
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
我们常用的选项是组合是aux 或lax,还有参数f的应用;
ps aux 或lax输出的解释;
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
PRI 代表这个程序『可被执行的优先级』
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
STAT 进程状态

D 不间断的睡眠(usually IO)
R 正在运行中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;

< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 位于后台的进程组;

WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;

ps 应用举例
实例一:ps aux 最常用
[root@localhost ~]# ps -aux | more
可以用 | 管道和 more 连接起来分页查看
[root@localhost ~]# ps -aux > ps001.txt
[root@localhost ~]# more ps001.txt
这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看
实例二:和grep 结合,提取指定程序的进程;
[root@localhost ~]# ps aux | grep httpd

实例二:父进和子进程的关系友好判断的例子
[root@localhost ~]# ps auxf | grep httpd
这里用到了f参数;父与子关系一目了然;
pgrep
pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了;
用法:
#pgrep 参数选项 程序名
常用参数
-l 列出程序名和进程ID;
-o 进程起始的ID;
-n 进程终止的ID;
pgrep举例:

[root@localhost ~]# pgrep -lo httpd
[root@localhost ~]# pgrep -ln httpd
[root@localhost ~]# pgrep -l httpd
[root@localhost ~]# pgrep httpd

终止进程的工具 kill 、killall、pkill

kill

[root@localhost ~]# ps  auxf  |grep   httpd

我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;
我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;
[root@localhost ~]# kill 4840 注:杀掉4840这个进程;

[root@localhost ~]# ps -auxf  |grep  httpd

注:查看一下会有什么结果?是不是httpd服务器仍在运行?

[root@localhost ~]# kill 4830  

注:杀掉httpd的父进程;

[root@localhost ~]# ps -aux |grep httpd  

注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?
对于僵尸进程,可以用kill -9 来强制终止退出;
比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;

[root@localhost ~]# ps aux |grep gaim

beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
root 5036 0.0 0.0 5160 724 pts/3 S+ 13:24 0:00 grep gaim

[root@localhost ~]# pgrep -l gaim

5031 gaim

[root@localhost ~]# kill -9 5031

killall
killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。

用法:killall 正在运行的程序名
killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;
举例:

[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# killall gaim

pkill
pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。
应用方法:
#pkill 正在运行的程序名
举例:

[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# pkill gaim

top 监视系统任务的工具
和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的;
top 命令用法及参数;
top 调用方法:
top 选择参数
参数:
-b 以批量模式运行,但不能接受命令行输入;
-c 显示命令行,而不仅仅是命令名;
-d N 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;
-i 禁止显示空闲进程或僵尸进程;
-n NUM 显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出;
-p PID 仅监视指定进程的ID;PID是一个数值;
-q 不经任何延时就刷新;
-s 安全模式运行,禁用一些效互指令;
-S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;

space 立即更新
c 切换到命令名显示,或显示整个命令(包括参数);
f,F 增加显示字段,或删除显示字段;
h,? 显示有关安全模式及累积模式的帮助信息;
k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)
i 禁止空闲进程和僵尸进程;
l 切换到显法负载平均值和正常运行的时间等信息;
m 切换到内存信息,并以内存占用大小排序;
n 提示显示的进程数,比如输入3,就在整屏上显示3个进程;
o,O 改变显示字段的顺序;
r 把renice 应用到一个进程,提示输入PID和renice的值;
s 改变两次刷新时间间隔,以秒为单位;
t 切换到显示进程和CPU状态的信息;
A 按进程生命大小进行排序,最新进程显示在最前;
M 按内存占用大小排序,由大到小;
N 以进程ID大小排序,由大到小;
P 按CPU占用情况排序,由大到小
S 切换到累积时间模式;
T 按时间/累积时间对任务排序;
W 把当前的配置写到~/.toprc中;

top 应用举例

[root@localhost ~]# top

然后根据前面所说交互命令按个尝试一下就明白了,比如按M,就按内存占用大小排序
当然您可以把top的输出传到一个文件中;

[root@localhost ~]# top > mytop.txt

然后我们就可以查看mytop文件,以慢慢的分析系统进程状态;

此图是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。
第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。
第四行:内存状态
8306544k total — 物理内存总量(8GB)
7775876k used — 使用中的内存总量(7.7GB)
530668k free — 空闲内存总量(530M)
79236k buffers — 缓存的内存量 (79M)
第五行:swap交换分区
2031608k total — 交换区总量(2GB)
2556k used — 使用的交换区总量(2.5M)
2029052k free — 空闲交换区总量(2GB)
4231276k cached — 缓冲的交换区总量(4GB)
这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行是空行
第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
job
放到后台运行的进程.
1.将程序放到后台运行,以&结尾.

$>nano b.txt &

2.查看后台运行的jobs数

$>jobs

3.切换后台作业到前台来.

$>fg %n	

n是job编号

4.前台正在的进程,放到后台。
ctrl + z
5.让后作业运行

$>bg %1

6.杀死作业

$>kill %1

Linux系统管理命令

用户和组管理
在Linux操作系统中,任何文件都归属于某一特定的用户,而任何用户都隶属于至少一个用户组。用户是否有权限对某文件进行访问、读写以及执行,受到系统严格约束的正是这种清晰、严谨的用户与用户组管理系统。在很大程度上它保证了Linux系统的安全性。本节课将对Linux系统中重要的用户和组管理文件进行介绍,并且介绍如何使用命令行对用户和组进行管理。
Linux帐号分类
用户帐号

  • 用来储存单一用户的数据,你可以使用一个用户帐号,来储存某一个用户的数据
    用户帐号分为:
    超级用户
    拥有完全控制功能,用户名称通常为root,其UID(用户系统标识符)为0
    普通用户
    分类:
    系统账号
    这种类型账号提供给Linux系统本身使用。在某些软件执行时候,需要你提供一个普通用户类型的账号。为了满足这个需求而建立的账号,我们称为系统账号。 在Red Hat Enterprise Linux 中,系统用户的UID在1到499之间。
    真实用户
    真实账号在系统中,被分配的UID范围为500至4,294,967,295之间。
    群组账号
  • 用来储存多个用户的信息,每一个群组账号可以用来记录一组用户的数据。
    群组账号分类:
    超级用户组
    root的用户群组我们称为超级用户组
    超级用户群组的GID(群组标识符)为0。隶属于超级用户群的成员,不具备系统管理的权利。
    系统群组
    与系统账号一样,系统群组也是给Red Hat Enterprise Linux 系统本身,或是某个软件使用。目前Red Hat Enterprise Linux定义系统群组的GID范围为1到499之间。
    用户自定义组
    除了上述的群组外其余的所有群组都是用户自定义群组。
    用户自定义组账号可使用的GID范围为500到4,294,967,293

用户账号文件——passwd
/etc/passwd文件是UNIX安全的关键文件之一。该文件用于用户登录时校验用户的登录名、加密的口令数据项、用户ID(UID)、默认的用户组ID(GID)、用户信息、用户主目录以及登录后使用的shell。/etc/passwd文件的每一行保存一个用户的资料,而用户数据按域以冒号“:”分隔。格式如下所示:
username:password:uid:gid:userinfo:home:shell
其中,各个域的含义如表所示:
/etc/passwd文件中域的含义
域 含 义
username 登录名
password 加密的用户口令
uid 用户ID
gid 用户组ID
userinfo 用户信息
home 分配给用户的主目录
shell 用户登录后将执行的shell(若为空格则默认为/bin/sh)

用户的登录名是用户用来登录的识别,由用户自行选定,主要由方便用户记忆或者具有一定含义的字符串组成。所有用户口令的存放都是加密的,通常采用的是不可逆的加密算法。一般来说,用户的UID应当是独一无二的,其他用户不应当有相同的UID数值,只有UID等于0时可以例外。每个用户都需要保存专属于自己的配置文件及其他文档,以免用户间相互干扰。当用户登录进入系统时,会启动一个Shell程序,默认是bash。
用户影子文件——shadow
Linux使用不可逆的加密算法(如MD5,SHA1等)来加密口令。和/etc/passwd类似,/etc/shadow文件中每条记录用冒号“:”分隔,形成9个域,格式如下所示:
username:password:lastchg:min:max:warn:inactive:expire:flag
其中,各个域的含义如表所示:
/etc/shadow文件中域的含义
域 含 义
username 用户登录名
password 加密的用户口令
lastchg 表示从1970年1月1日起到上次修改口令所经过的天数
min 表示两次修改口令之间至少经过的天数
max 表示口令还会有效的最大天数,如果是99999则表示永不过期
warn 表示口令失效前多少天内系统向用户发出警告
inactive 表示禁止登录前用户名还有效的天数
expire 表示用户被禁止登录的时间
flag 保留域,暂未使用

用户组账号文件——group和gshadow
/etc/passwd文件中包含着每个用户的用户组ID(GID)。
/etc/group文件对用户组的许可权限的控制并不是必要的,这是因为Linux系统用来自于
/etc/passwd文件的UID、GID来决定文件存取权限。
用户组可以像用户一样拥有口令。
/etc/group文件记录格式如下所示:
group_name:group_password:group_id:group_members
其中,各个域的含义如表所示:
/etc/group的域及其含义
域 含 义
group_name 用户组名
group_password 加密后的用户组口令
group_id 用户组ID(GID)
group_members 以逗号分隔的成员用户清单

/etc/gshadow的域及其含义
域 含 义
group_name 用户组名
group_password 加密后的用户组口令
group_members 以逗号分隔的成员用户清单

用户和用户组账号管理命令:
使用useradd命令添加用户

Linux使用useradd命令添加用户或更新新创建用户的默认信息。默认信息包括前文所述的用户账号文件所存储的用户相关信息。useradd命令的格式如下:
useradd [参数] {username}
参数: -u UID 用来指定UID
-g GROUP 定义用户的主要群组,GROUP必须已经存在
-G GROUP 指定用户的次要群组,可以指定多个次要群组,每个用“,“相连
-d HOME 指定用户的主目录
-s SHELL 指定用户登录执行的程序
-r 建立一个系统用户的账号
出于系统安全考虑,Linux系统中的每一个用户除了有其用户名外,还有其对应的用户口令。因此使用useradd命令增加时,还须用passwd命令为每一位新增加的用户设置口令。之后还可以随时用passwd命令改变自己的口令。passwd命令的格式如下:
passwd username
使用usermod命令修改用户信息
usermod命令用来修改使用者账号,具体的修改信息和useradd命令所添加的信息一致,这里不再一一列出。usermod命令的格式如下:
usermod [参数] {username}
参数: -u UID 修改UID
-g GROUP 修改主要群组名称
-G GROUP 修改次要群组名称
-d HOME 修改家目录位置
-s SHELL 修改可执行程序
-l NEWNAME 修改用户名
-L 锁定帐号
-U 解除锁定
使用userdel命令删除用户
userdel命令用来删除系统中的用户信息。userdel命令的格式如下:
userdel [参数] {username}
参数: -r 删除用户的主目录和邮箱
使用groupadd命令创建用户组
groupadd命令可以以指定名称来建立新的用户组。groupadd命令的格式如下:
groupadd [参数] {groupname}
参数: -g GID 指定群组账号的标识符
-r 指定添加的群组成为系统群组
-f 强制执行。一般情况下groupadd不允许建立一个与使用过的GID相同的群组账号,使用这个参数就会建立相同的GID群组账号
使用groupmod命令修改用户组属性
groupmod命令用来修改用户组信息。groupmod命令的格式如下:
groupmod [参数] {groupname}
参数: -g GID 修改GID
-n NEWNAME 修改群组的名称
使用groupdel命令删除用户组
groupdel命令比较简单,用来删除系统中存在的用户组。使用该命令时必须确认待删除的用户组存在。groupdel命令的格式如下。
groupdel groupname
用户权限管理
Linux系统中三种基本权限
用户属主、用户属组及其它人权限
-rw-r–r-- 1 root root 762 11-11 20:34 a.out
文件类型和权限 链接数 文件拥有者 文件拥有组 内容大小 更改时间 文件名
文件类型 ls命令中的缩写 应用
一般文件 - 保存数据
目录 d 存放文件
符号链接 l 指向其他文件
字符设备节点 c 访问设备
块设备文件 b 访问设备
命名管道函数 P 进程间通信
套接字 s 进程间通信
八进制表示法
字符表示法 八进制表示法 含义
r 4 读(查看文件)
w 2 写(删建文件、重命名)
x 1 执行(进入目录)

Linux权限管理命令

u 属主
g 属组
o 其他
a 所有
创建文件时,系统默认权限为666
创建目录时,系统默认权限为777
修改文件权属于chown,chgrp
chown修改属主和修改属主、属组
chown [–R] [属主:属组] /user file
chgrp修改属组
chgrp group file

谁可以修改文件的所有者和权限
chmod root用户和文件的所有者
chgrp root用户和文件的所有者(必须是组成员)
chown 只有root

Linux文件归档管理

Linux怎样保存文件
数据

  • 这里数据就是文件的内容
    元数据
  • 在linux系统中,所有与某个文件相关的额外信息都保存在一个叫做i-节点(inode)的结构中
    文件名
  • 文件名保存在名为目录项(dentry)的结构中
    i-节点
    所有文件都有如下的属性:
    文件类型、链接数、用户所有者、组所有者、权限和时间信息。这种信息保存在名为i-节点的结构中。

链接数
i-节点记录文件的链接数,也就是引用该文件的目录项(dentry)数。通常常规文件只有一个文件名,链接数也是1
时间信息
每个i-节点保存与文件相关的三种时间信息,通常叫做atime、ctime、mtime,含义如下:
缩写 名称 目的
atime 访问时间 文件数据每次被阅读后更新
ctime 改变时间 文件的i-节点信息每次被改变后都会更新
mtime 修改信息 文件数据每次被更改后更新

用stat命令查看i-节点的信息
一个文件的i-节点信息集合叫做该文件的状态(startus)。
我们可以把stat命令看作是现实文件状态的命令。
用法:
stat [option ] file

一个文件系统内,每个i-节点都分配到一个独一无二的i-节点编号
硬链接和软连接
硬链接:
将多项目录项关联到一个i-节点(同一个文件保存在两个地方或不同的文件名)
ln 目标文件 链接文件
软连接:是一些不同的i-节点,用来引用其他文件名。
ln -s 目标文件 链接文件
查找文件find命令
用法:
find {搜索目录} {搜索条件} [动作]
搜索条件:
-size n 文件的大小
-type 文件的类型(f普通、d目录、i软连接)
-name:按照文件名查找文件。支持统配符*和?。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime n:按照文件的更改时间来查找文件。
-atime n:搜索在过去n天读取过的文件。
-ctime n:搜索在过去n天修改过的文件。

  • n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
    有时间有关选项:共有 -atime, -ctime -mtime ,以 -mtime 说明
    -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更改过内容的文件;
    -mtime +n :列出在 n 天之前(不含 n天本身)被更改过内容的文件名;
    -mtime -n :列出在 n 天之内(含n 天本身)被更改过内容的文件名。
    -print:输出搜索结果,并且打印
    find命令查找文件的几种方法:
    (1)根据文件名查找
    例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:
find / -name lilo.conf

find命令后的“/”表示搜索整个硬盘。
(2)快速查找文件
根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:

find /etc -name smb.conf

这样,使用“快速查找文件”方式可以缩短时间。
(3)根据部分文件名查找方法
有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:

find / -name '*abvd*'

输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。
(4) 使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。

find /etc -size +500000c -and -mtime +1

动作:
-exec command; 对匹配文件执行command,用{}表示匹配的文件。命令形式为:
’ command’ {} ;,注意{ }和\;之间的空格。
-ok command; 与-exec相同,但是提示确认没个文件的操作
用法:找出名字为1.txt文件 并且用长格式输出:

find /root -name 1.txt -exec ls -l {} \;

文件压缩
为什么要压缩文件
节约空间和网络传输
压缩命令
gzip
用法:
gzip [option ] file
参数: -c 将输出重定向到标准输出
-d 解压缩文件
-r 对目录递归,将里面的文件分别压缩
-1…9 指定压缩比例。
文件后缀:.gz
bzip2
用法:
bzip2 [option ] 压缩后文件 要压缩文件
参数: -c 将输出重定向到标准输出
-d 解压缩文件
文件后缀:.bz
文件归档tar
将文件归档可以把整个目录树保存在同一个文件中
tar命令用于创建、列出、抽取归档文件。
归档文件通常也会一并压缩
用法:
tar [option ] file
-c 创建归档文件
-x 释放文档
-v 显示详细信息
-f 文件名(可带路径)
-z 使用gzip压缩
-j 使用bzip2压缩

Linux软件管理

软件包管理
在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础,
只有我们学会软件包的管理才能谈得上其它的应用。
RPM
RPM是软件管理程序,提供软件的安装、升级、查询、反安装的功能。
优点:
a、安装方便,软件中所有数据都经过编译和打包
b、查询、升级、反安装方便
缺点:
a、缺乏灵活性
b、存在相依属性
用法:
rpm 参数 软件包
指令选项
-i:安装。
-U:升级安装,如果不存在也安装。
-F:更新安装,如果不存在不安装。
-v:查看信息。
-h:有进度条。
–replacepkgs:强制覆盖安装。
–nodeps:不考虑相依属性。
-q <软件名>:查询。
-qa:查询所有。
-ql <软件名>:列出软件的文件清单。
-qi <软件名>:列出软件信息。
-qf <文件名>:查询文件所属软件。
-e <软件名>:删除软件。
例子:
rpm -ivh bind-9.3.6-4.P1.el5_4.2.i386.rpm#安装
rpm -Uvh/Fvh bind-9.3.6-4.P1.el5_4.2.i386.rpm #升级安装
rpm -e bind-9.3.6-4.P1.el5_4.2.i386 #删除软件包
rpm -qpi *.rpm #查看软件包里的内容
rpm -qpl *.rpm #查看软件包将会在系统里安装哪些部分
rpm –qa #列出所有被安装的rpm 软件包
YUM
 yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.
  它能便于管理大量系统的更新问题
yum特点
  *可以同时配置多个资源库(Repository)
  *简洁的配置文件(/etc/yum.conf)
  *自动解决增加或删除rpm包时遇到的倚赖性问题
  *使用方便
  *保持与RPM数据库的一致性
yum配置
挂载光盘文件到硬盘
mkdir –p /mnt/cdrom
chmod 777 /mnt
mount -t iso9660 /dev/cdrom /mnt/cdrom
配置/etc/yum.repos.d/server.repo
[cdrom]
name=cdrom
baseurl=file:///mnt/cdrom
enabled=1
清除原有的yum信息
[root@localhost ~]# yum clean all
查看yum 信息
[root@localhost ~]# yum list
yum管理软件
yum install –y software #安装软件
yum update -y software #更新软件
yum remove -y software #删除软件
yum list #列出资源库中特定的可以安装或更新以及已经安装的rpm包
yum grouplist # 累出所有软件包群组
yum groupinstall ‘包群组名’ # 安装软件包群组
yum groupremove ‘包群组名
yum info 包名 #查看软件包信息
yum search 包名 # 搜索
yum clean all #清除缓存
yum添加163源
地址:
http://mirrors.163.com/.help/centos.html
下载方式:
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
apt-get
用Linux apt-get命令的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get就能搜索到我们想要的软件。/etc/apt/sources.list是存放这些地址列表的配置文件,其格式如下:
deb [web或ftp地址] [发行版名字][main/contrib/non-free]

我们常用的Ubuntu就是一个基于Debian的发行
命令:
apt-get update:在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。
apt-get install packagename:安装一个新软件包
apt-get remove packagename:卸载一个已安装的软件包(保留配置文件)
apt-get –purge remove packagename:卸载一个已安装的软件包(删除配置文件)
apt-get autoclean apt:会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件
apt-get clean:这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
apt-get upgrade:更新所有已安装的软件包
apt-get dist-upgrade:将系统升级到新版本
apt-get autoclean:定期运行这个命令来清除那些已经卸载的软件包的.deb文件。

Linux磁盘分区查看

$>fdisk -l /dev/sda
查看磁盘使用情况(disk free)
$>df -ah /home/centos //查看

你可能感兴趣的:(大数据-玩转数据-Linux,linux,服务器,ssh)