Linux下远程登录另一台Linux服务器
$ssh 远程主机上的用户名@远程主机的ip地址或主机名
$ssh IP地址
Windows下利用SSH工具登录一台linux服务器
登录工具1: SecureCRT.exe
登录工具2:xshell
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 | 存放经常变动的数据,比如日志、邮件等 |
命 令 | 说明 |
---|---|
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 | 关机 |
$>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
基本正则表达式中元字符的意义如下:
字符 | 意义 |
---|---|
* | 匹配*前面的那一个字符的0次或多次 |
. | 匹配任意一个字符(只匹配一个,可以是空格) |
^ | 匹配行首,行首的字符序列必须是^后的字符序列,该符号放在[]里面时,不再表示匹配行首,而是取反的意思 |
$ | 匹配行尾,行尾的字符序列必须是该符号前的字符序列,特殊的 ^$ 匹配一个空行, ^.$ 匹配只有一个字符的空行 |
[] | 匹配字符集合中的任意一个字符(只匹配一个) |
\ | 用于转义元字符,使之成为普通字符 |
\<\> | 用于精确匹配 |
\{n\} | 匹配前面字符的n次 |
\{n,\} | 匹配前面字符的至少n次 |
\{n,m\} | 匹配前面字符的n-m次,至少n次,至多m次 |
进程分类
进程一般分为交互进程、批处理进程和守护进程三类。
进程的属性
进程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帐号分类
用户帐号
用户账号文件——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 执行(进入目录)
u 属主
g 属组
o 其他
a 所有
创建文件时,系统默认权限为666
创建目录时,系统默认权限为777
修改文件权属于chown,chgrp
chown修改属主和修改属主、属组
chown [–R] [属主:属组] /user file
chgrp修改属组
chgrp group file
谁可以修改文件的所有者和权限
chmod root用户和文件的所有者
chgrp root用户和文件的所有者(必须是组成员)
chown 只有root
Linux怎样保存文件
数据
链接数
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天修改过的文件。
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压缩
软件包管理
在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础,
只有我们学会软件包的管理才能谈得上其它的应用。
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文件。
$>fdisk -l /dev/sda
查看磁盘使用情况(disk free)
$>df -ah /home/centos //查看