首页 > 代码库 > Linux学习杂记

Linux学习杂记

最近一口气看完了韩顺平老师讲的Linux视频教程,自己也在学习的过程中做了些笔记,记载如下,希望帮助到一些喜欢研究Linux的同学,也算是在云端备份一下笔记吧,以免电脑出现不可控的因素而遗失自己的心血。

首先声明,这篇笔记不是按照韩老师讲的顺序来写的,可能有些凌乱,但我相信,你总能找到你想要的信息:

       Linux必看书籍:
      鸟哥的私房菜
      Linux编程从入门到精通
      Linux内核安全剖析


命令:
shutdown -h now  立刻关机
shutdown -r now   重启
reboot   重启
startx  进入图形界面
logout  用户注销


注意:
登陆时尽量少用root账号登陆,因为它是系统管理员,最大的权限,避免操作失误。
可利用普通用户登陆,登陆后再用“su -”命令来切换成系统管理员身份。


C程序在Linux下编译运行:
1.  gcc  hello.c  或者  gcc  -o  newName  hello.c
2.  ./a.out


简单介绍,Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目”/“,然后在此目录下再创建其他的目录。


根目录”/“下的文件有:
 bin:  存放Linux中应用软件工具的各种命令,例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、newaliases、nslookup passwd、quota、smb*、wget等。
 sbin: 存放Linux中系统管理的各种命令,例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevelshutdown等。
boot:存放内核以及启动所需的文件等。
       dev:  存放设备文件。
       etc:   存放系统的配置文件。
       home: 用户文件的主目录,用户数据存放在其主目录中。
       lib :   存放必要的运行库。
       mnt :存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
       proc :存放存储进程和系统信息 
       root :超级用户的主目录 
       tmp : 存放临时文件的目录 
       usr :  包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。 
       var :  包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等。建议单独的放在一个分区。


     vi编辑器的使用:
       在编辑模式时,ESC+“:wq" 为保存退出,":q!"为强制退出(不保存)
      ":set nu"在文件中每行行处显示行号
      ":set nonu"取消行号
       ":+数字" 为跳至该数字标示的行,如":4"跳到第四行 
      ":/+字符串"查找特定字符串,如果搜索的字符串不是所要的,可以按"n"键来往下继续查找。如”:/main“查找”main“字符串位置。
       ":?+字符串" 用法同 上面的  ":/+字符串"


   Linux的用户管理:
   useradd  userName     添加用户userName
   passwd   userName     修改用户userName的密码
   userdel   userName     删除用户userName
   userdel -r userName   删除用户以及用户主目录
     
   Linux的运行级别:
   命令 init 【012356】
   运行级别:0    关机
                     1    单用户
                     2    多用户状态没有网络服务
        3    多用户状态有网络服务
                     4    系统未使用保留给用户
                     5    图形界面
                     6    系统重启
常用的运行级别是3和5,要修改默认的运行级别可修改文件 /etc/inittab的id:5:initdefault: 这一行中的数字。


Linux命令:
pwd    显示当前的工作目录
cd       切换目录
ls         列出文件和目录
ls  -a    显示隐藏文件
ls  -l     显示长列表格式
ls -la    显示隐藏文件,并以长列表格式显示
mkdir   新建目录
rmdir    删除空目录(不能删除有文件的目录,可以使用”rm -rf“强制删除有文件的目录)


touch   新建空文件
cp        复制文件
cp -r dir1 dir2   递归复制命令(复制子目录信息)
mv     移动文件或者改文件名
rm     删除文件(不能直接删除目录)
rm  -rf  强制删除所有内容(包括目录和文件)


ln  建立符号连接,类似如windows的为某个文件建立快捷方式吧
ln -s  源  目标   如ln -s /etc/inittab  inittab (inittab指向实际文件/etc/inittab)


more 显示的文件内容较多时,分页显示
less    显示文件内容带分页
grep   在文本中查询内容 如  "grep main hello.java"  , "grep -n main hello.java"显示所在行的行号
|         管道命令  
man 命令相当于 windows的 help


find  搜索文件及目录
1. 在特定的目录下搜索并显示指定名称的文件和目录
     find  /  -name  Hello.java
2. 搜索一段时间内被存取/变更的文件或目录:
    find /home -amin -10     10min内存取的文件或目录
    find /home -atime -10     10h内存取的文件或目录
    find /home -cmin -10      10min内更改过的文件或目录
    find /home -ctime +10     10h前更改过的文件或目录
3. 搜索指定大小的文件
    find /home  -size +10k     查找/home目录下大小为10K的文件
    
重定向命令:
   ls -l >  a.txt  列表的内容写入文件a.txt中(覆盖写)
   ls -la  >>  aa.txt  列表的内容追加到文件aa.txt的末尾
   从文件中输入信息  database_program  <  database_data


在Linux中的每个用户必须属于一个组,不能独立于组外。
在Linux中每个文件有所有者、所在组、其他组的概念。


当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。
用命令 ls -ahl  可以看到文件的所有组
命令  chgrp  组名  文件名   修改文件所在的组。


linux中添加组:groupadd   groupName
添加用户时,可以指定将该用户添加到哪个组中,
同样的用root的管理权限可以改变某个用户所在的组:usermod  -g  组名  用户名
还可以用  usermod   -d  目录名  用户名   改变该用户登陆的初始目录


修复Redhat命令行英文乱码的情况:
vi /etc/sysconfig/i18n   在后面加上  LC_ALL=POSIX  注销后即可恢复正常显示。


使用命令行备份和恢复mysql数据库:
备份:mysqldump -u root -p密码 数据库名>data.bak
恢复:mysql -u root -p密码 数据库名<data.bak


linux中添加组:  groupadd  groupName
查看linux中所有组信息: vi  /etc/group  或者  cat  /etc/group


创建用户,并同时指定将该用户分配到哪个组: useradd -g groupName  userName
查看linux中所有用户信息:vi  /etc/passwd   或者  cat  /etc/passwd


改变权限的命令:
chmod   改变文件或目录的权限
如:chmod 777 abc.txt   赋予abc.txt权限 -rwxrwxrwx  (4+2+1)
三组rwx分别属于:文件所有者访问权限、用户所在组权限、其他用户权限。


改变文件拥有者(chown)和用户组(chgrp)命令:
如:chown  xiaowang  abc.txt   改变abc.txt的拥有者为xiaowang
       chgrp root  abc   改变abc所属的组为root
       chown root  ./abc  改变abc目录的所有者为root
       chown -R  root  ./abc   改变abc目录及其下面所有的文件和目录的所有者为root


在linux上安装jdk的步骤:
1.把所有的安装文件打包成.iso文件,挂载到linux操作系统上:
   mount  /mnt/cdrom
2.把安装文件拷贝到 /home 下
   cp  文件  /home
3.cd  /home (切换目录到/home下)
4.安装
  ./xxxxx.bin
5.看看一个文件 /etc/profile  (环境配置文件)
   配置环境变量:如下图所示



Linux分区:
 概述:首先我们要对硬盘分区的基本概念进行一些初步的了解,硬盘的分区主要分为基本分区和扩展分区两种,
基本分区和扩展分区的数目之和不能大于4。且基本分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,
也就是说它必须还要进行二次分区。那么由扩展分区再分下去是什么呢?它就是逻辑分区,而且逻辑分区没有数量上的限制。


对windows用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标示符,然后就可以选用这个字母来指定在
这个分区上的文件和目录。它们的文件结构都是独立的,非常好理解。但对这些用户初上手的redhat linux,可就有点恼人啦。因为对redhat linux用户来说无论有几个分区,分给给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。redhat linux中每个分区都是用来组成整个文件系统的一部分,因为它采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。下面我们先来看看redhat linux的驱动器是如何标示的。
对于IDE硬盘,驱动器标示符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“X”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”表示分区,前四个分区用数字1到4表示,它们是主分区或扩展分区。从5开始就是逻辑分区。例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。对于SCSI硬盘则标示为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。


挂载命令  mount  [参数][设备 名称] [挂载点]
特别说明:在挂载光驱时,可直接使用  mount  /mnt/cdrom
卸载命令   umount [设备名称]
查看磁盘使用情况  df  [参数]
如:df -l
查看某个目录是在哪个分区  df  [目录全路径]
查看linux系统分区具体情况  fdisk  -l




Linux任务调度:
设置任务调度文件   /etc/crontab
   设置个人任务调度。执行crontab  -e命令。
接着输入任务到调度文件  如: 5 * * * *  ls -l   /etc/  >  /tmp/to.txt   (每小时的第五分钟执行ls  -l  /etc/  >  /tmp/to.txt命令)


调度文件中时间表示的规则:



怎样去调度多个任务?
1.在crontab -e 中直接写.(不推荐)
2.可以把所有的任务,写入到一个可执行文件(shell编程)。(很好)


终止任务调度:
crontab  -r  终止任务调度
crontab  -l  列出当前有哪些任务调度


1.date命令:显示系统的时间。可以在命令行中直接输入“date”命令。来查看系统的时间。
2.利用date命令来更改系统的时间。
   date MMDDHHMMCCYY.SS:意思是指:月月日日时时分分年年年年.秒秒
3.查看月历:
   cal  9  2014 : 查看2014年9月的日历。
4.查看年历:
   cal 2014 : 查看2014年的年历


Linux监控网络状态信息:
显示网络统计信息的命令 netstat
       此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容。
此命令直接输入即可使用。如:netstat  -an
检测主机连接命令ping:
       是一种网络检测工具,它主要是用来检测远程主机是否正常,或是两部主机间的介质是否为断开、
网线是否脱落或网卡是否故障。如:ping  对方ip地址或网址


显示数据包经过历程命令:traceroute
       此命令可以直接输入使用,用来检测数据包在网络上传输的过程。从本机到远程主机完整路径,帮助管理员解决问题。
route:
       所谓路由是指将数据由来源网络送往目的地网络的操作,在大型网络中,路由是非常复杂的,因为数据包在抵达目的地时,
可能经过的节点有很多,路由表是存储在路由器或一些其他链接设置上的窗体。其中记录着到指定目的地的网络路径,以及这些路径的相关数值。




Linux压缩和解压问题:
■以zip和unzip处理.zip文件
   1.zip命令的基本使用方法:
      zip  file.zip  *:zip后接压缩后的文件名,在它的后面输入要压缩的文件即可。
   2.压缩后,自动删除原文件
      zip  -m  file.zip  to.txt :意思是把to.txt文件压缩成file.zip文件,to.txt会自动删除的。
   3.将子目录一起压缩:
       zip  -r  file.zip  * : 将当前目录下的子目录一起压缩。
   4.忽略子目录的内容:
       zip  -j  file.zip  *
    5.将已压缩的或没有必要压缩的文件去掉:
       zip  -n  .mpg:  .jpg:  .gif:第一种文件中间要用“:”分开。
    6.压缩某一日之后的文件:
        zip  -t  102002  file.zip:将当前目录下在2002年10月20日之后的文件压缩。
    7.不压缩链接文件的原文件:
        zip  -y  file.zip   *
    8.压缩率问题: -1到-9 (-9的压缩率最高)
       zip  -9  file.zip  *
    9.将不需要压缩的文件排除在外。
       zip  file.zip  *  -x  file2.txt :  在压缩时,将当前目录内的file2.txt文件排除在外。


■以unzip命令进行.zip文件的解压缩
     1.直接解压缩文件
        unzip file.zip 
     2.排除不需要解压缩的文件
        unzip  file.zip  -x  file2:除了file2文件外,其他的文件都解压缩。
     3.查看压缩包的内容
        unzip  -Z  file.zip:查看file.zip压缩包的内容。也可以使用“-l”、“-v”来查看压缩包的内容
        


配置 .bashrc 文件可以指定某些程序在用户登陆的时候就自动启动。


alias用法(为某个命令取别名):
   alias  llh=‘ ls  -l  /home ‘




shell使用:
■通配符:  *    代表多个字母或数字
                  ?  代表一个字母或数字
                   ls  a*     ls  a?     ls  ?at?
                   ls  f080[1-6].tif




runlevel 命令,可以查看当前的运行级别


Linux系统启动过程如下:
a) BIOS自检
b) 启动GRUB/LILO
c)  运行LINUX内核并检测硬件
d)  运行系统的第一个进程init
e)  init读取系统引导配置文件 /etc/inittab中的信息进行初始化
f)   /etc/rc.d/rc.sysinit 系统初始化脚本
g) /etc/rc.d/rcX.d/[KS]* - 根据运行级别X配置服务
      终止以“K”开头的服务
      启动以“S”开头的服务
h) /etc/rc.d/rc.local  执行本地特殊配置
i)  其他特殊服务




Linux下Shell介绍:


查看目前使用的是哪种shell:
env

在linux下,我们有时可能希望知道或是使用最近执行的命令,history可能会帮上大忙。
1.history  5 :显示最近使用的5个命令。
2.  !5   : 执行历史编号为5的命令。
3.  !ls  :    执行最后一次以“ls”开头的命令。

追踪路由: tracert  目标ip/域名
测试两个ip是否畅通:ping  目标ip
在windows下 查看ip情况命令:ipconfig
在linux/unix下查看ip情况命令:ifconfig


Linux网络环境配置:
方法一:(1) 用root身份登陆,运行setup命令进入到text mode setup utiliy对网络进行配置,这里可以进行
                    ip,子网掩码,默认网关,dns的设置。
              (2) 这时网卡的配置没有生效,运行 /etc/rc.d/init.d/network  restart命令,我们刚才做的设置才生效。
方法二:(1) ifconfig  eth0  x.x.x.x对网卡进行设置
              (2) ifconfig  eh0  network  x.x.x.x对子网掩码设置。
         对广播地址和dns 使用默认的
注意: 这样配置网络将会立即生效,但是是临时生效。
方法三:(1) 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 这个文件里各个属性可以修改,包括ip,子网掩码,广播地址,默认网关。
              (2) 这时网卡的配置没有生效。运行  /etc/rc.d/init.d/network  restart 命令,我们刚才做的修改设置才生效。方法
          这种方法是最低层的修改


在Linux中,所有的设备都是文件。


Linux进程的概念和管理:
1. 在Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号。
2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
3. 每个进程都可能以两种方式存在的。前台与后台。所谓前台进程就是用户目前的屏幕上可以进行操作的。
    后台进程则是实际在操作,但由于屏幕上无法看到进程,通常使用后台方式执行。
4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。


ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数。
显示详细的进程信息:
1. ps  -a:显示当前终端的所有进程信息。
2. 以用户的格式显示进程信息:ps  -u。
3. 显示后台进程运行参数:ps  -x
pa  -aux : 看到全面,信息也全面。


若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程,使用 kill 命令
来完成此项任务。
    终止某个进程:kill  进程号   如:kill  12345
    kill  -9  12345:因为有些进程会捕捉某些信号,如果直接不能结束进程可以使用 "-9" 传送信息(强制kill掉)。
   


Linux学习杂记