Linux自学笔记

这篇博客详细介绍了Linux的基本操作,包括切换控制台、关机重启、命令帮助、文件和目录管理、权限修改、正则表达式、查询与查找、用户及用户组管理、网络配置、挂载操作、服务管理和压缩解压缩。内容涵盖常用命令的使用方法和参数,以及系统级别的配置和管理,适合初学者和进阶用户学习。
摘要由CSDN通过智能技术生成

切换控制台  图形界面下CTRL+ALT+SHIFT+F1~F6, 控制台下切回图形界面 ALT+F1~F7(F7为回到图形界面)
shutdown -r now  重启计算机(reboot 不管其它用户而直接重启)
shutdown -h now 关闭计算机(shutdown 的其它参数请百度)
shutdown -h now "信息" 向所有在线终端用户发送信息然后执行关机
shutdown -h -t 30 now  马上向所有在线终端用户发送信息,发完信息后等30秒钟再执行关机
shutdown -h -t 30 +3  从现在开始向所有在线终端用户发送信息,发完等30秒,然后再继续等待,等够3分钟执行关机,期间每过一点时间会不断提示在线用户
clear  清屏=WINDOWS DOS窗口中的cls

命令帮助:
whais passwd 简短显示ls命令是做什么用的
passwd --help 简单显示ls命令的用法
man passwd  passwd命令的详细文档 默认是1号文档 也可以查其它文档如 man 5 passwd 查passwd的5号章节文档。在man内输入 /passwd 查找passwd关键字 按n/N 向上向下搜索

 

##### 目录、文件操作及相关 #####

pwd  显示当前所在目录路径
cd [目录] 改变目录(相对或绝对目录)
cd .. 上一级目录
cd ~ 返回用户主目录
cd - 切换到上一次使用的目录
ls -lh | more[less]  查看当前目录下文件及文件夹[l]为详细列表查看[h]是以MB方式查看 more[less]是多屏显示
cat /etc/passwd  将文件按顺序显示出来。[-n] 列出行号,[-b]列出除空白行的行号
与cat类似的还有:
more 按页向下显示,          less 按页向上向下显示,          tac 按行反序显示,          nl 显示行号,                    
head 显示头10行,            tail 显示末尾10行,                od 以二进制方式显示

 

rpm -qa | nl | less 显示所有安装的rpm包,并标上行号且可以上下翻页

 

touch abc.txt  创建一个abc.txt的没有内容的空文件,或touch {时间} abc.txt 改变abc.txt的修改时间
ln -s /etc/passwd pas.txt  在当前目录下创建一个链接文件。一个目标源(或称指向)为/etc/passwd 的pas.txt链接文件 如果不带 -s 则是创建硬连接,即在目录下的二个文件指向同一个inode号的文件.所以二个文件删除任何一个,另一个文件还是存在。而-s 软连接 如果删除了源文件,则链接文件会因找不到源文件而失效报错。硬连接有很多限制,比如只能针对文件而不是目录做连接、不能跨文件系统等等。
mkdir abc  创建一个abc目录 mkdir -p /a/b/c 直接创建这些层级目录而不管以前是不是有这些目录
mkdir -p abc/aaa  创建abc目录的同时也创建abc下的子目录aaa
rmdir abc  删除abc目录
rm -rf abc  递归删除abc这个目录及下面所有文件和文件夹并且不询问用户
rm abc.txt  删除一个文件
cp /etc/passwd /home/passwd_bak 复制etc/passwd 文件到/home/下,并重命名为passwd_bak
cp -r abc/ /home/bbc  递归将abc目录及其下所有东西复制到/home/bbc下
mv abc ../aaa 移动abc目录及其下所有东西(mv没有 -r 参数)到当前目前的上一级目录中并改名为aaa 直接改名:mv abc aaa
            文件操作命令中可能用到的参数选项[-f]后台操作或直接执行命令系统不会询问你;[-i]与 -f 相反;[-r]递归操作,表示对其下的所有文件或文件夹执行命令
file abc.txt  查看文件类型 
grep -n water /home/iloli/abc.txt /root/*  在/home/iloli/abc.txt文件中和/root下的所有文件中查找带water字符的内容并显示出来,[-n]是显示时带上行号
 

权限及修改权限
chmod  777 abc.txt 改变文件或文件夹权限.-rwxrwxrwx.从第二位开始每三位用二进制算得结果为777,分别代表三个权限:user(u),group(g),other(o) 也可以用另一个命令方式:chmod u[+,-,=]wx abc.txt  ;chmod a=rwx abc.txt (a代表ugo) 

chown iloli abc.txt  改变文件或文件夹所属者。将abc.txt文件的所属者改为iloli(此用户必需存在) chown -R iloli ./ 将递归(包括子文件和子文件夹)设置当前目录(./)下所有文件和文件夹的所属者修改为iloli。另外chown还可以代替chgrp命令如:chown iloli:users abc.txt 将abc.txt的所属者改为iloli同时所属组改为users
chgrp group01 abc.txt  改变文件或文件夹所属用户组。将abc.txt文件的所属用户组改为group01(此用户组必需存在)

 

关于文件及文件夹的r w x权限的说明:
1、文件r权限——可以读取该文件的内容
      文件w权限——包括对文件的编辑、修改。但不能删除该文件和重命该名文件名
      文件x权限——该文件可以被系统执行
2、文件夹r权限——可以读取(ls)该文件夹的目录结构,但不能进入(cd)到该文件夹中
  文件夹w权限——可以新建、删除、重命名及移动该文件夹下的文件和文件夹
      文件夹x权限——可以进入(cd)这个文件夹,或说可以将该文件夹切换成工作中的文件夹(工作目录),但不能读取此目录结构(ls)

 

文件及文件夹的隐藏属性(权限)说明:
lsattr  显示当前目录下的隐藏属性
chattr  [+-=]i abc.txt  给abc.txt加上 i 的隐藏属性。常用的有二个隐藏属性:[a] 文件只能添加数据不能修改和删除,[i] 文件不能添加修改数据,不能删除、改名,也不能被链接。

 

关于umask文件及文件夹掩码的说明:
该命令用来设置限制新文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行,并自动设置掩码改变默认值,新的权限将会把旧的覆盖。umask是从权限中“拿走”相应的位,且文件创建时不能赋予执行权限

默认的用户权限:
帐户名       文件夹      文件    umask
root          775       664        002

普通用户     755       644        022
还原umask用户文件权限掩码

帐户名       文件夹                          文件                  
root          775  + 002 = 777        664 + 022 = 666

普通用户     755   +022 = 777       644 + 022 = 666
通过上面我们发现,任何用户在没有umask的情况下 他创建文件夹和文件的权限都分别为 777和666
正因为有了umask 才使得不同用户(uid)在创建文件夹和文件时,所得到的权限会不同。计算方法为777或666 - 022(umask值)

查看当前umask : umask -S
设置当前umask : umask 044

 

一般uid<99 umask为002 ;uid>99 umask为022 。这个规则放在这个文件中:/etc/bashrc


 
##### RegExp正则表达式 #####
正则表达式的符号有: . *  [  ]  ^  $  /  /<  />  /{  /}
.    --> 代表任意一个字符
*   --> 代表多个字符, .* 代表任意多个字符
[]   --> 代表可以在中括号中出现的字符,[^] 代表不能在中括号中出现的字符,如:[a-z] 、[^a-z]
^   --> ^不在中括号中时,代表以某个字符开始的内容,如:^aabbcc
$   --> $代表以某个字符结尾的内容,如:$abc ,如:^ab.*xb$ 以ab开头中间任意多字符并以xb结尾的内容
/    --> 脱意字符 /* /. /{ /} 表示字符* . {  }的本意,而不是通配符
/<ask/> --> 代表查找有ask这个单词的内容
a/{5/} --> 代表查找a连续出现了5次的内容

##### 查询、查找与排序 #####

1、字符串查找
grep 'k' /home/abc.txt   在指定文件里查找内容中有字符k的行
grep '^a.*b$' ./* 在当前目录下查找内容中包括 以a开始中间任意多的字符并以b结尾的 文件
grep -v '^#' /etc/squid/squid.conf | grep -v '^$' 在文件中查找,去除#号开头的行,将结果再查找,去除所有空行。-v 表示取反
grep -R  'aaa'  ./ 在当前及以下所有目录中(-R递归)查找有aaa字符内容的文件

2、文档查询、文档查找
which -a ifconfig  命令查找。专门查找执行文件的命令在PATH中。不同用户身份可能查出不同结果。-a表示在所有$PATH目录下去查找并列出而不是找到一个就停止。
whereis cd  内部命令查找在bash中。查找bash内部命令在哪个包里。
type cd 查询命令是什么类型的命令
file aaa.txt 查询文件是什么类型的文件 
locate abc.txt  同上。此命令在RHEL中有效!查找在LINUX的命令文件数据库中查找abc.txt文件而不是去查找搜索硬盘 如果是刚生成的新文件需要用updatedb来更新LINUX的文件数据库,如果更新的数据量大则会有一点慢
find /etc -name pass*  查找在/etc目录之下的所有以pass开头的文件和文件夹,find还可以根据文件的各种时间和大小来查找比如find /home -size +10k 查找/home下文件超过10K的文件 find的参数还有-mtime -atime -ctime -user -nouser 等如:
   access time    , atime在读取文件或执行文件时会修改
   create time      , ctime在文件写入时,更改所有者,权限。链接时文件的ctime会随之改变
   modified time ,  mtime 在文件写入时会改变。
                 -mtime n        find /home -mtime 0  查找在指定目录下24小时之内改动过的文件
                 -mtime +n      find /home +mtime 3  查找在指定目录下大于3天改动过的文件
                 -mtime -n       find /home -mtime 3  查找在指定目录下小于3天改动过的文件
                 -user name    find /home -user iloli  查找在指定目录下属于iloli的文件
                 -nouser          find /home -nouser    查找在指定目录下不属于任何人的文件
cut -d: -f6 按字符:隔开域(-d: 表示以:分隔),并只显示出第六个域(-f6)的内容
split [-bl] filename 文件切割命令。-b 300k (单位可以是:b,k,m)代表将文件以300K大小进行切割 -l 10代表每10行进行切割
cat ~/abc*.txt >>abctotal.txt 将所有分割的文件合并到一个文件中。
sort -t ':' -k3r -k1 -n  /etc/passwd 按字符:隔开域(-t: 表示以:分隔),然后先按第三个域(-k)反向排序(-r反向),再按第二个域正向排序,排序方式为数字(-n)
uniq aaa.txt 去除重复行。-i -c 分别代表忽略大小写,进行分类计数(先用sort排序再使用uniq的去重和计数功能)
wc aaa.txt 文本文件内容统计 不带参加显示{多少行 多少英文单词 多少字符}对应的参数分别是:{-l -w -m}
ps -aux | awk '$2 < 100{print }'   在ps -aux 结果中 查找(awk的默认分隔符为空格)第二列小于100的数据,全打印出来如果只要第一和第三列可以把后面改为{print $1 "\t" $3}
ps -ef | awk -F ' ' '$8 ~ "^/bin.*"{print $0}' 在ps -ef 结果中查找,-F ' ' 指定分隔符为空格,第8列匹配以/bin开头后面任意多字符的结果,并将匹配的行全部输出。(~表示匹配  !~表示不匹配)

 

##### 用户及用户组操作 #####

useradd iloli   创建一个iloli用户,并将iloli放进同时由系统默认创建的iloli组里
useradd -g bob iloli  创建一个iloli用户,并将iloli放进bob用户组中
passwd iloli  回车后按提示设置iloli的密码
gruopadd bob   创建一个bob用户
userdel iloli   删除一个iloli用户
groupdel bob   删除一个bob用户组(该组删除前必须先删除其下所有用户)
usermod -g admin iloli 改变用户iloli到admin组中
su -root  切换用户为root(包换用户环境),如果前面没有“-”切换时依旧为原用户的用户环境

cat /etc/passwd   查看所有用户
                           /etc/passwd文件格式说明  用户名:密码(不显示):UID(用户号):GID(组号):注释:家目录:登陆shell
cat /etc/group   查看所有用户组
                           /etc/group文件格式说明  用户组名称:用户组密码:GID:用户列表
                           注:UID(用户号)和GID(组号)500以下为系统保留。用户如果要强行手动配置这二个字段应该设在500以上。

 

##### 改变LINUX的启动后进入图形界面还是命令行界面 #####
step1:vi /etc/inittab
step2:找到 id:3:initdefault:
step3:如果上面id:后为3则是命令行启动,如果是5则是图形界面,如果为1则为单用户启动模式  

从字符命令模式下启动图形界面:startx
退回字符命令模式,只要在图形界面下注销用户就可以了(前提是inittab设置的是3)

 

##### 关于挂载 mount  #####
NO.1 虚拟机中挂载和使用光驱
step1:先用WinISO等软件将文件制作为ISO映像
step2:在虚拟机管理软件中设置光盘为ISO映像文件
step3:在Linux中执行 mount mnt/cdrom (mnt/cdrom为Linux的默认光盘挂载点,自用也可自定义别的目录为挂载点)
step4:卸载光盘执行 umount mnt/cdrom

 

一般的挂载命令为:
mount /dev/hdc /mnt/cdrom  将/dev/hdc(文件)设备挂截到/mnt/cdrom目录下,在虚拟中Linux开机状态下直接远程连接到本地ISO或光驱时可能要重启Linux才行正确挂载
mount -t iso9660 /dev/cdrom /mnt  如果上面命令不能正确挂载,则可用带文件格式参数的命令进行  

NO.2 在Linux中直接挂载iso文件
mount -t iso9660 -o loop /root/abc.iso /mnt/cdrom  将/root/abc.iso光盘映像文件挂载到/mnt/cdrom/目录中
你也可以直接在Linux中将光盘制成iso文件:
cat /dev/cdrom > a.iso

NO.3 在Linux中挂载U盘
mount -t vfat /dev/sdb1 /mnt  U盘一般被Linux识别为SAS设备,所以如果服务已有一块SAS(sda)那U盘就是sdb1(sdb的第1个分区

NO.4 在Linux中挂载网络中另一台Linux的共享目录
mount 192.168.0.1:/var/ftp/pub /mnt   需要192.168.0.1这台Linux机器对它的目录启动网络共享

NO.5 在Linux中挂载网络中另一台Windows的共享目录

mount -t cifs -o username=administrator //192.168.0.1/tools /mnt   密码会在此命令回车后提示用户输入
mount -t cifs //192.168.0.1/tools /mnt   如果是匿名用户就不用-username选项,用户密码会在此命令回车后提示用户输入



其它相关挂载、卸载的参数及命令:
mount -a   -a代表auto 是将 /etc/fstab 文件中的挂载内容全部重新挂载一次
mount -o remount,rw,auto /  -o remount 参数为重新挂载 rw为挂载为可读写 auto 是指定此文件系统是否以允许被mount -a 自动挂载。
umount -f -f代表强制卸载。umount 时,可以将umount的对象指定为挂载点或是设备文件名。
vi /etc/fstab 开机自动挂载的设备内容,一定要在此文件中存在的挂载,才会被系统开机后自动挂载,否则需要每次开机后执行手动挂载。


重要:
no1.当一个磁盘或光盘或U盘或软盘被挂载到系统上后,像光盘是不能退出来的。因为文件系统是一个很重要的整体概念,一但被挂载上去就是一个整体(成为目录树的一部分),不能直接将已挂载的光盘或U盘从机器上退出来,否则极容易被告之文件系统错误或损坏。正确的做法是:在退出光盘或U盘之前,务必将其挂载目录从文件系统中卸载掉。
no2.每个文件系统应该挂载在一个单一的空目录下,即:单一目录不应该挂载多个文件系统。如:新建一个目录 /home/dvd1/ 在这目录中只能挂载一次,如将DVD挂上来。如果此后又将另一个U盘挂到此目录下,那原来/home/dvd1/ 下的所有文件会暂时消失(被隐藏),只有当U盘被卸载后,原来的挂载内容才会重新被显示出来。 
no3.同一个文件系统不应该被重复挂载。即:U盘被挂在 /home/usb/下,同时又用mount命令将它挂到了 /media/usb/下。
no4.所要挂载的磁盘最好使用全英文的语系(即英文文件名和目录)。如果是带有中文的语系则挂载时可以使用详细参数 -o iocharset=cp950 来指定语系为中文语系。例如:mount -t vfat -o iocharset=cp950 /dev/sdc1 /mnt/flash

 

##### 系统(CPU内存磁盘网络等)相关命令 #####
Linux系统的运行级别 level
          0 :表示关机
          1 :单用户模式
          2 :无网络连接的多用户命令行模式
          3 :有网络连接的多用户命令行模式(标准运行级别)
          4 :不可用
          5 :带图形界面的多用户模式
          6 :重新启动


dmesg  显示开机信息。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里
fdisk -l  查看目前磁盘分区情况[-h]为按MB,GB查看
fdisk /dev/sda 进入分区工具,对/dev/sda设备进行分区。注:由于fdisk是设备级命令(针对磁盘,而非分区)所以设备后面不能带分区号(如sda1 sda2)否则可能出错。
fdisk /dev/sda 后的常用参数:
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition     删除一个分区
   l   list known partition types
   m   print this menu     显示帮助
   n   add a new partition     新建一个分区

   o   create a new empty DOS partition table
   p   print the partition table  显示此设备磁盘的分区表
   q   quit without saving changes  退出且不保存更改
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit  写入/保存分区表
   x   extra functionality (experts only)

fsck -C -f -t ext3 /dev/sda1  -C显示以直方图显示进度 -f 强制检查,即:未发现unclean标志也主动进入细化检查。-t ext3 指定要检查的分区的文件系统。
                                               注意:fsck这个命令只有当系统出现问题才使用。最后在单用户模式下使用,且使用时被检查的分区务必不可挂载在系统上。
df -l  查看磁盘使用情况[-h]为按MB,GB查看(以下类似) df /etc/ 查看/etc/目录在哪个磁盘上和它的使用情况
du -h /boot  查看/boot目录的使用情况 注:du与df查看同一挂载目录点的容量时会有不同的原因——du 命令是用户级的程序,它不考虑Meta Data(inode,super,block bitmap,inode bitmap等中间数据Meta Data),而df命令则查看文件系统的磁盘分配图并考虑Meta Data。df命令获得真正的文件系统数据,而du命令只查看文件系统的部分情况。
du -sh /mnt 仅查看/mnt这个目录内所有文件总计大小

          注意:ls -l 也能看到目录的大小,但ls显示的大小为目录文件本身的大小,并不是目录下所有文件内容的大小
ps -aux  查看当前所有系统进程[-aux]选项 a当前终端进程 u以用户格式显示 x所有后台进程 f以树状结构显示进程关系
kill -9 1777 -9代表强制杀掉PID为1777的进程,如果不带-9则有些重要进程无法杀掉 
top -d 10  查看CPU使用率。-d 10指定刷新时间为10秒一次此命令相当于windows任务管理器中的进程窗口。在此界面中输入 u 回车再输入用户名可监视该用户的进程,如果输入 k 回车再输入进程号PID则是结束该进程。按 q 退出,按enter即刻刷新显示
free 查看内存及缓存等相关使用情况
netstat -an  查看所有有效的网络连接
traceroute  (tracert)路由跟踪
route  查看系统路由表
set 查看系统环境变量(全局变量)与用户变量(局部变量),注意:用户变量是基于bash进程的,如果新开一个bash,前一个bash的用户变量无法带过来。
myvar='abcdefg' 定义一个用户变量,之后通过echo $myvar 可以查看此变量。
exprot myvar 将myvar提升为环境变量。
unset myvar 删除这个变量
env  的用户与系统环境变量PATH可以下面二个文件中修改:
      1 用户环境变量文件 /root/.bash_profile或/home/iloli/.bash_profile  与windows中的用户环境一样只对该用户生效。重新登陆后生效。
      2 系统环境变量文件 /etc/skel/.bash_profile 与windows中的系统环境变量一样对所有用户有效。重新登陆后生
cat /proc/version 查看系统的内核版本       
uname -a 查看系统内核版本及32或64位系统
      返回结果:Linux carddata 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT 2010 i686 i686 i386 GNU/Linux
      i686表明是32位操作系统,i686是i386的一个子集,i686只支持Pentium 2 (686)及以后的CPU ,之前的CPU不支持。
      返回结果:Linux carddata 2.6.18-194.el5 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
      x86_64 表明是64位操作系统
file /sbin/init 也可以查看系统是 32 bit 还是 64 bit .
lsb_release -a 查看LINUX的发布版本内容 如得到 redhat enterprise 5.4 之类的内容

 

 

##### 多任务与前后台程序 #####

tar -zpcf /tep/etc.tar.gz /etc &    “&”符号表示将前面的命令(工作)丢到后台去执行。
Ctrl+z   此组合键表示将当前的工作丢到后台且暂停执行。
jobs [-lrs]   -l 列出job number和PID; -r 仅列出在后台run (运行)的工作;  -s 仅列出在后面 stop (暂停)的工作
fg %2  将后台工作号为2的工作拿到前台来处理。(“%”符号可有可无)
bg %2 让后台工作号为2的工作在后台执行它。(“%”符号可有可无)
kill [-signal] %jobnumber 或 kill [-signal] PID 杀死某个工作或进程(带%为杀死工作号,不带%则为杀死进程PID号) -l 显示所有可用的signal;-9 强制删除;-15 以正常方式终止一个工作。
at [-mldv] TIME 工作调度命令,将工作按指定时间放到后台去执行(用户断开或注销后依然有效)参数:-m 工作完成后向用户发EMAIL;-l 列出所以该用户的at调度任务;-v 以更明显的时间方式列出任务表;-c 可以列出后面接的该任务的实际命令内容。注意:at 的所有基本和错误输出信息都会发过执行的MAILBOX里去,如果要在某个终端上显示就要在命令中用输出重定向语句!如:echo hell > /dev/tty1 二个at的例子:at now + 5 minutes 或 at 23:00 2011-09-02 之后进行命令输入的at shell环境,建议用命令的绝对路径来输入,不然用户所在的当前目录会对命令有影响。全输入完后用Ctrl+D 来结束
atrm 3 删除at号为5的后台调度工作。
nohup  [命令与参数] & 脱机执行命令,能让工作在你脱机或注销后继续进行。与at有点类型,加&表示放到后台执行。但nohup不支持bash内置命令,要执行的命令必须是外部命令。如:nohup ./sellp.sh &  之后就你可以中断或注销与主机的连接了,它照样会继续执行。

循环执行的工作调度:crontab
crontab 可分为用户级别的和系统级别的。直接运行crontab 为用户级别的,对应的配置文件在/var/spool/crontab/用户名 的文件里。系统级别的配置文件在/etc/crontab 文件里
循环时间的定义:分|时|日|月|周  分时日月周中可以为直接数字出可以为特殊通配符:* 代表任何时间;,(逗号)代表分隔多个时间;- (减号)代表连续的一段时间;/n 代表每隔多少时间 如:*/5 表示每5 (分|时|日|月|周)看它在什么位置。
*/5 4-6 10,20 * * 代表每月的10号与20号二天的4-6点,每隔5分钟的意思。一般“周”与“日”上面不会同时定义数字。

crontab使用者的限制:
以下二个文件建议只保留一个,allow比deny优先,也就是说如果有allow则不会去判断deny文件。
  /etc/cron.allow (在这个文件中的用户可以使用crontab)
  /etc/cron.deny  (在这个文件中的用户不可以使用crontab,系统默认保留这个)
crontab [-u username] [-l|-e|-r] -l 查阅crontab中的内容;-e 编辑crontab中的内容;-r 删除所有crontab中的内容,如果只要删除一条请用-e
-e 后则会自动调用VI进入编辑。之后文件会被保存在 /var/spool/cron/%(username) 当中。也可以直接编辑此用户生成的文件

如果是系统要执行的例行调度任务可以编辑这个文件:/etc/crontab 这个纯文本文件。

 

##### 显示及设置时间日期日历等 #####

cal  显示本月日历,并高亮显示今天是多少号
cal 2011 | less  显示2011年所以月份的日历
date 显示Linux的系统时间  按2012-11-02 22:05:10 显示时间: date +%Y-%m-%d' '%T
date -s 20110515  设置系统日期,格式有多种,年月日中间可以加"-"或"/"
date -s 20:40:00  设置系统时间
date -s "2011-05-15 20:40:00"  同时设置系统日期和时间
hwclock  显示BIOS的时间 默认为 hwclock -r
hwclock --hctosys  把硬件时间设置为系统时间 (hwclock to system) rethat 中也可以用hwclock -w 代替
hwclock --systohc  把系统时间设置成硬件时间 (system to hwclock)
注:hwclock是机器主板上BIOS硬件的时间,date是Linux的操作系统的时间.Linux每次启动时会读取BIOS时间附给date,之后date就独立于BIOS的时间而运行.
hwclock  显示BIOS的时间 默认为 hwclock -r
ntpdate 0.uk.pool.ntp.org  利用NTP客户端从网址:0.uk.pool.ntp.org更新自己的系统时间(210.72.145.44 中国国家授时中心)

  

##### 向其它终端或控制台发送消息 #####

方法1 向指定终端或控制台单条发送
echo please up the ifeth0 > /dev/pts/0

方法2 向指定终端或控制台的某用户连续发送
write root pts/2
消息内容... (回车后发送并等待新消息输入)
Ctrl+D 结束发送
注意:mesg y  如果不能write则要手机打开write功能

方法3 向所有终端、控制台的所有人发送
wall 消息内容

 

##### 输出输入重定向 #####

输出分为正确的输出信息和命令错误时的错误输出信息
> 和 >> 或 (1> 和 1>>) 为重定向正确的输出信息 (> 为覆盖, >> 为累加)
2> 和 2 >> 为重定向错误的输出信息
&> 或 2>&1  同时重定向正确和错误的输出信息,只覆盖无累加
例子:
ls ~/bbb -a &> aaa.txt  无论命令成功和失败都将结果输出到aaa.txt中。
ls ~/bbb | tee -a filename 双向重定向。即:把ls ~/bbb 的结果在屏幕上输出并同时保存到filename文件中去。-a 代表累加保存

 

##### 系统日志及安全相关 #####

last  显示用户所有登陆日志
last root 仅显示root用户的所有登陆日志
lastlog  显示Linux中所有用户的最近一次登陆情况,不会列出root用户
finger {root} 列出用户或指定用户登录名,终端,登录时间及个人信息

 

##### shell相关命令 #####

ls -l /bin/*sh  查看Linux中有哪几种shell(中国人用bash,国外用tcsh或ash)
env  查看当前正在使用的shell以及环境变量
users 查看当前登陆到系统的所有用户
who  显示目前所有登陆的用户帐号、终端号和shell名
w      同上,但比上面显示更多的信息
who am i  显示当前自己的登陆帐号、终端号和shell名
ps -ef  查看进程
pkill -u iloli  注销iloli用户并结束iloli开启的所有程序和服务,包括后台程序及服务(此命令比较危险,如果只想踢掉连上来的用户可以先netstat -anp查出该用户用ssh 22端口连接上来的进程号,再用杀死该连接进程的方式kill -9 {PID})
netstat -anp  [a] 显示所有连接; [n] 以IP方式显示而不是域名; [p] 是查看进程号; [c] 持续刷新显示;[s]显示网络信息统计;[t] 显示TCP协议;[u] 显示UDP协议;[r] 显示路由表等同于route命令 
chsh -s /bin/ash  改变shell为ash的shell 然后必须注销再登陆才能生效。
exit OR logout 二者都有退出的意思,但第一个shell(登陆shell)可以用logout或exit来退出登陆,而通过第一个shell再bash出来的shell(普通shell)就需要用exit来退出 
pstree 查看进程关系树

 

##### 其它实用命令 #####

history 5   显示在shell中最近使用的5个历史命令
!5  执行在历史命令中编号为5的命令
!ls  执行最后一次以"ls"开头的命令

 

 

##### 网络及网络配置相关命令 #####

/etc/rc.d/init.d/network {start|stop|restart|reload|status} 设备{启动|停止|重启|重载|状态}
route 或 netstat –rn  查看当前路由表

 

配置网络IP等相关参数的三种方法:

方法1:

setup  启动"test mode setup utiliy”配置网络(需要重启网卡设备)
/etc/rc.d/init.d/network restart  重启网卡设备使得网络相关配置生效

方法2:(此方法为临时修改即时生效,但在重启计算机后会恢复到修改前的配置)
ifconfig  查看当前网络配置,并记下需要修改的网卡名。如eth0
ifconfig eth0 192.168.50.5 netmask 255.255.255.0  设置IP及子网掩码 Bcast会自动修改
ifconfig eth0 192.168.50.5  单独修改IP
ifconfig eth0 netmask 255.255.0.0  单独修改子网掩码 Bcast会自动修改

方法3:(重要!最底层的方法直接修改设备的配置。一般都是采用这个方式修改)
vi /etc/sysconfig/network-scripts/ifcfg-eth0  进入这个文件中修改详细网络参数。
/etc/rc.d/init.d/network restart  重启网卡设备使得网络相关配置生效
 

附:

 

/etc/sysconfig/network-scripts/ifcfg-eth0
"*" 为必须项

DEVICE=eth0                          *接口名称
BOOTPROTO=none                   *静态配置,若该值为“dhcp”则为动态获得,另外 static 也是表示静态ip地
BROADCAST=192.168.10.255    广播地址,通过IP地址和子网掩码自动计算得到
HWADDR=00:13:D3:27:9F:80   *MAC地址
IPADDR=192.168.10.238          *IP地址
NETMASK=255.255.255.0         *子网掩码
NETWORK=192.168.10.0          指定网络,通过IP地址和子网掩码自动计算得到
ONBOOT=yes                            *开机时自动加载,若为no则此设备在开机后不被加载(此设备不可用)
GATEWAY=192.168.10.1           *网关
TYPE=Ethernet
IPV6INIT=yes
IPV6_AUTOCONF=yes
PEERDNS=yes
USERCTL=no

------------------------------------------

ifdown eth0              关闭eth0网络
ifconfig eth0 down     关闭eth0网络

ifup eth0                   开启eth0网络
ifconfig eth0 up          开启eth0网络
注:通过对某个网卡状态的 down-->up 之后等于在此网卡上重启了网络服务而无需再用/etc/rc.d/init.d/network restart 重启所有设备的网络服务
其他方面:
service network start            //启动网络服务
service network stop             //停止网络服务
service network restart         //重启网络服务
service network status          //查看网络服务状态

 

修改default gateway  /etc/sysconfig/network-scripts/ifcfg-eth0 同上
(route add default gw 192.168.1.1)  即时生效
加入或修改:
GATEWAY=192.168.1.1  启动生效

 

修改dns  /etc/resolv.conf 
vi /etc/resolv.conf  修改后可即时生效,启动同样有效
加入或修改:
nameserver 202.96.128.86
nameserver 202.96.128.166  最多可有三个,作为上一个失败后的候选

 

修改host name  /etc/sysconfig/network 
(hostname fc2)  即时生效
vi /etc/sysconfig/network  启动生效
加入或修改:
NETWORKING=yes
HOSTNAME=rh-linux.fc.org  

 

手动配置静态路由
方法一:通过命令即时添加路由,但在机器重启或是网络服务、网卡重启后失效
route add[或 delete] -net 172.16.218.0/24[或 netmask 255.255.255.0] gw 172.30.218.1 [dev eth0]  (即时生效)


方法二:通过配置文件永久添加静态路由 

vi /etc/rc.d/rc.local 文件最后按下面格式添加路由:(永久生效)
route add –host 180.200.3.170 gw 10.200.6.201 dev eth0
route add –net 180.200.0.0 netmask 255.255.0.0 gw 10.200.6.201 dev eth0

说明:route add:命令关键字,表示增加路由,若要删除路由,则为route del;
         -host/-net:表示路由目标是主机还是网段;
           netmask:表示路由目标为网段时才会使用到,表示路由目标网段的子网掩码;
                    gw:命令关键字,后面跟下一跳网关;
                   dev:命令关键字,后面跟具体设备名,表示路由是从该设备出去。
          注:需要重启系统生效,可使用以下命令重启系统(以root用户执行)

 

查看当前路由表
route 或 netstat –rn

 

##### 查看、开启和关闭服务service #####
setup  这个命令将打开网络相关配置工具包括时区、网络、系统
服务、防火墙等配置,在system services(系统服务)选项中有所有安装的服务,空格即勾选该服务自动启动,反之关闭(下次重启后生效)
ntsysv  系统服务的配置工具。这个命令完全只是上面setup命令工具中“系统服务”的部分,完全可以用上面命令代替。

service --status-all  查看机器上所有服务的运行状态
service ntpd {start|stop|restart|reload|status}  设备{启动|停止|重启|重载|状态}


chkconfig 功能说明:检查,设置系统的各种服务及配置服务在哪个系统级别上启动。
语 法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
语法:
chkconfig --list [name]  常用此命令来看各项服务分别在系统的哪个运行级别上被启动
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>  用来更改某个服务在某个系统运行级别上的启动或关闭
chkconfig [--level levels] name

例如:chkconfig --level 345 sendmail on 在系统345运行级别上启动sendmail服务。 

chkconfig --list :显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
chkconfig --del name:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。

解释:chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。
on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。

需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。
对于每个运行级,只能有一个启动脚本或者停止脚本。
当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。


 

 

##### 压缩、解压缩及软件包相关命令 #####

Linux中的压缩有三种:
gzip(gunzip解压,常用压缩命令),zip(unzip解压,与windows中的winzip相不多,可以直接解压windows传过来的winzip文件),bzip2(bunzip2解压,比gzip压缩率高些)
gzip a.txt (将当前目录下的a.txt压缩,压缩后原文件直接被移进压缩包内)
gunzip(gzip -d) a.gz 解压这个文件到当前目录

普通压缩gzip只能对单文件解压,如果要对多个文件或是文件夹进行压缩,必须先用tar命令打包,之后再压缩
tar -cvf /root/abc.tar /etc/passwd /etc/ (将/etc下的passwd文件和 /etc/文件夹打包到 /root目录下的abc.tar文件)
tar -rvf abc.tar /root/aaa.txt (将root目录下的aaa.txt追加到abc.tar包中去)
tar -xvf abc.tar -C ./tmp (将abc.tar解包到当前目录的tmp目录下。如果不指定-C 则默认解包到当前目录)
tar选项解释:
c 创建包;v 可视;f 打包的源为文件;x 解开包;r 追加文件到包;z 在打包、解包的同时用gzip压缩或解压缩;j 同z,只不过是用bzip2来解压和压缩;t 是查看包内容;

tar也可以加选项"z"将tar和gzip合并到一个命令中
tar -cvfz a.tar.gz /root/aaa.txt /etc/passwd /homp/temp (将后面二个文件和一个目录打包并压缩成a.tar.gz文件)
tar -xvfz a.tar.gz  -C ./temp 解压a.tar.gz包到当前目录下的temp目录下,不加-C解压到当前目录中
注意:tar rvfz 是错误的。追加打包时不能加z 只能 tar -rvf,tar在选项参数后一定要有tar的目录文件

 

rpm包  RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件,但不仅仅只在redhat的Linux上才能用。
rpm -qa  查看此计算机上安装的所有rpm软件
rmp -q mysql  查看此计算机上是否安装有mysql的rpm软件包
rmp -ivh [rpm包路径]  安装rmp软件包 选择[i]安装install,[v]提示verbose,[h]进度条hash
rmp -e mysql  删除(卸载)mysql软件包,并检查依赖关系,如果有其它软件依赖这个软件则不能被删除
rmp -e --nodeps mysql  删除(卸载)mysql软件包,不检查依赖关系,如果有其它软件依赖这个软件也继续删除

 

##### 进阶操作 #####
1任务调度
crontab -e  进入任务调度编辑,在这里面可以像编辑VI一样写入命令格式为:* * * * *(分,时,日,月,周) 空格 {命令} 如:* 1 * * * date > /root/mydate  表示每小时的第0分钟都进行这个命令操作。
crontab -l[-r]  -l为查看目前crontab里的任务调度内容 -r为终止所有任务调度(等于进crontab -e后将里面内容全部删除后保存)
在任务过多时,可以将任务分类放到一个或多个可执行文件中去(一般以.sh结尾表示是shell编程的文件如abc.sh),之后在进crontab -e 在面里直接写入这个文件名abc.sh 就可以直接执行。当然abc.sh默认是不具备x执行权限的,你必需用chmod 744 abc.sh给文件加上x权限才行。

 

2、登陆linux时显示提示 Login Banner 及登陆shell时执行的文件,login shell 与 non-login shell
登陆Linux shell后显示及执行顺序
1)显示Login Banner 头部信息
信息文件分为两个,一个是登陆前显示的,一个则是登陆后显示的:
登陆前的banner文字文件 /etc/issue
登陆后的banner文件文件 /etc/motd

你可以用任意的文本编辑器编辑保存即可,然后这两个文件中支持一些特殊字符,列表如下:

/l 显示第几个终端机接口;
/m 显示硬件的等级 (i386/i486/i586/i686...);
/n 显示主机的网络名称;
/o 显示 domain name;
/r 操作系统的版本 (相当于 uname -r)
/t 显示本地端时间的时间;
/s 操作系统的名称;
/v 操作系统的版本

头部信息显示完成之后,才正式进入shell的登陆执行阶段

2)login shell 和 non-login shell的最大区别:
在于读取环境变量的配置文件不同,当系统启动时或你开启一个新到终端登录系统时,系统通过调用/bin/login程序处理登录并在 一个shell中显示命令行提示符,这个shell就是login shell;该shell程序可以是bash也可以是sh或csh,具体使用哪种shell可以在/etc/passwd中设置(/bin/login程 序读取该文件决定使用哪种shell),例如:maomaovv:x:500:500:maomaovv:/home/maomaovv:/bin/bash
指示maomaovv登录时使用bash


初始化和启动时加载的默认脚本类型有如下几个:

他们的主要作用是初始化登录之后的环境(比如环境变量,提示符样式等等)

1. /etc/profile 系统级别,login shell时加载

2. /etc/bash.bashrc 系统级别,非标准脚本,有的发行版中不存在,即使存在,除非在其他脚本中明确加载,否则不会被加载。

3. /etc/bash.logout 退出login shell时加载

4. $HOME/.bash_profile 用户级别,login shell时加载

5. $HOME/.bashrc 用户级别,登录shell时加载,与/etc/bash.bashrc类似

6. $HOME/.bash_logout 用户级别,退出login shell时加载

7. $HOME/.inputrc 用户级别,readline初始化

 

Login Shell

初始化脚本加载顺序如下:

1. /etc/profile,/etc/profile.d/*

2. $HOME/.bash_profile,$HOME/.bashrc,/etc/bashrc或者/etc/bash.bashrc

3. $HOME/.bash_login

4. $HOME/.profile
同一行内多个脚本是表示后面的脚本被包含在前面的脚本中得到加载。

Non-Login Shell

可理解为开头部分描述的interactive shell

初始化脚本加载顺序如下:

1. $HOME/.bashrc,/etc/bashrc或者/etc/bash.bashrc,/etc/profile.d/*

Login Out时执行
退出shell时去执行$HOME/.bash_logout

 

 

3使用"命令 | grep {关键字}"方式让系统返回想要的内容。如:
cat /etc/passwd | grep iloli  打开/etc/passwd文件,只返回有iloli关键字的内容行。

 

##### 常见问题及解决 #####
1shell出现乱码
在远程终端上中文版的linux在shell输出命令的结果时有时候会是乱码,这时你可以先查看当前语言编码,然后或是改变终端的编码从出输出相应的文字字符,或是将系统的语言修改为英文从而一直以英文方式输出就不会有乱码(如果文件或文件名为中文则仍是乱码)
echo $LANG  查看系统当前语言环境 $LANG为系统的语言环境变量名  输出:zh_CN.UTF-8
LANG=en_US  改变系统语言环境为英文

 

2进入单用户模式single 修改init运行级别或修改密码

用上下键将光标放在linux系统上,按“e”
在有kernel那一行按“e”,并在最后 输入“空格 single”,然后回车
按“b”,启动,系统会自动进入单用户模式(无需密码),
之后就可以像root用户一样操作了
使用passwd root命令,按提示输入新口令
修改口令后,输入reboot 命令重启系统即可
或:
vi /etc/inittab 中把 id:X:initdefault: 中的X改为3(多用户全功能模式)或5(进X系统)

 

3、解决LINUX每次重启后,网卡都要手动激活的问题

这是由于在设置网卡IP配置信息的时候由于当时存在冲突或是其它原因,造成此网卡不被LINUX开机加载,每次都得手机加载开启。解决方法很简单:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
设置 ONBOOT=yes 即可,如果设置为no 则LINUX开机后不会启用(激活)此网卡

 

4、如何删除多余的网卡或是.bak的网卡(如eht0.bak)

  一、删除VM中多余的ifcfg-eth0.bak
  系统更改网卡或网卡MAC地址后会出现个eth0.bak配置备份文件
  解决方法:
  /etc/sysconfig/networking/devices目录下,将ifcfg-eth0.bak删除(此文件删除后,在setup 中将看不到此名称的网卡了)
  /etc/sysconfig/networking/profiles/default,将ifcfg-eth0.bak删除
  /etc/sysconfig/network-scripts/,将ifcfg-eth0.bak删除

  二、删除Linux系统中多余的网卡(例如:eth1)
  /etc/modprobe.conf,删除alias eth1 XXXX
  /etc/sysconfig/networking/devices目录下,将ifcfg-eth1删除 (此文件删除后,在setup 中将看不到此名称的网卡了)
  /etc/sysconfig/networking/profiles/default目录下,将ifcfg-eth1删除
  /etc/sysconfig/network-scripts/目录下,将ifcfg-eth1删除

  三、检测网络接口(eth0)是否工作正常
  /etc/modprobe.conf,该文件中必须有:alias eth0 XXX
  /etc/sysconfig/hwconf,该文件中eth0对应的配置也必须正确
  /etc/sysconfig/network-scripts目录下,必须有网络接口的配置文件:ifcfg-eth0
  /etc/sysconfig/network-scripts/ifcfg-eth0文件中的配置是否正确,例如:DEVICE=eth0

 

 

5、unix2dos、dos2unix 文本文件断行符(回车符)转换

我们发现在LINUX下创建的文本文件在WINDOWS下用记事本打开时,所有换行符都变成黑色方块。这是由于UNIX与DOS的断行符编码不相同造成的。UNIX是/r ,DOS是/r/n
解决方法:
1)直接在WINDOWS中用EDITPLUS、WORD或写字板等高级文本编辑器打开,就能显示正常。WORD打开后再“另存为”就可以直接转换断行符编码
2)在LINUX中用命令对文本文件里的断行符进行转换。如下:
unix2dos filename  将文件filename 的 unix 断行字符转换为 dos断行字符
dos2unix filename  与上面相反

 

6、如何清空mail里的邮件
直接删除 /var/spool/mail/用户名 这个文件 则为清空 mail 中的所有邮件

 

 

s

 

 

 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值