Linux学习笔记

1,X Window是一个协议,独立于操作系统,有很多种实现,比如KDE,GNOME,FVWM等,在登录时可以自由选择.
2,Unix默认的图形环境是CDE(通用桌面环境),服务器追求的是稳定安全.
3,Linux的硬盘分为scsi和ide,scsi以sda,sdb...标示;ide以hda,hdb...标示.
4,windows系统连接虚拟机中的Linux系统,可以在windows中添加一块回环网卡(厂商:Microsoft,网卡:Microsoft Loopback Adapter),将IP设置在同一网段就可以通信了.
5,Linux的命令格式:命令 选项 参数,其中命令是Linux提供的,选项是命令操作的方式,参数是命令操作的对象
6,Linux中的命令分为两种:root可以执行的/sbin,/usr/sbin,和所有用户可以执行的/bin,/usr/bin.
7,dr-xr-xr-x. 2 root root 4096 12月 4 07:18 bin按顺序解释:

Linux中常见的文件类型:d目录,-二进制文件,l(link)软连接文件--的权限都是rwx(最终指向源文件),时间为创建时间,类似于windows的快捷方式,如果源文件删除了,软连接就不存在了
Linux中的权限:r-read读,w-write写,x-execute执行
r-xr-xr-x:前三个表示所有者user或者owner,缩写u,文件的创建者或者转让人;中间三个是所属组group,缩写g;最后三个是其他人others,缩写o
2表示硬链接数:类似于copy -p + 同步跟新(原因是:与源文件有相同的inode),-p是硬链接的时间和源文件一致,如果用copy那么拷贝文件的时间和源文件不一样;源文件删除了,硬链接还可以存在,相当于备份;不管是向源文件或硬链接文件更新内容都会更新的;硬链接不能跨文件系统(即分区)生成.
root所有者
root所属组
4096是文件或者目录大小,这个数值不准确,Linux中是使用block块来表示的(存储文件的最小单位),默认一个block为512bytes,可以自己调整大小.
12月 4 07:18 创建时间或最后修改时间
bin 文件或者目录
8,Linux中内核只认识数字,因此所有的对象都有一个表示,比如uid,gid,pid,其中文件有个inode即i节点
9,改变文件和目录的权限:chmod {[ugo] [+-=] [rwx]}|{421(rwx)} 文件或目录
[图片上传中。。。(1)]
10,su - username 切换用户;当从root切换到普通用户不需要密码,从普通用户切换到root或者其他普通用户需要密码.
11,使用chown 用户 文件或目录,改变文件或目录的所有者,注意用户必须存在
12,使用chgrp 用户组 文件或目录,改变文件或目录的所属组,注意所属组必须存在
13,使用umask查看默认的权限值:
1>,umask返回0022,其中第一个0是特殊权限位,022是用户权限掩码值,真实的权限为777-022=755
2>,umask -S 返回:u=rwx,g=rw,o=rw
3>,在linux中创建的文件默认权限是644,即在任何时候创建的文件都不会授予x执行权限.
4>,修改创建的默认权限:umask 掩码值(777-想要修改的权限)

14,使用which 命令,可以查找命令所在的绝对路径,同时如果有别名记录也会一同显示
15,使用whereis 命令,可以查找命令所在的绝对路径,同时也找到命令的帮助文档位置
16,使用find 搜索路径或搜索范围 搜索方法,来查找文件或命令,常见使用方法如下:
1>,根据文件名查找-name,可以使用通配符(匹配0到多个字符)和?(匹配一个字符)
find /etc -name init 查找init文件,精确匹配
find /etc -name init
查找文件命中以init开头的文件
find /etc -name init? 查找文件名以init开头的5个字符的文件
2>,根据文件大小查找-size,后面是文件大小(以block计算,比如100M=1001024K=1024002block):
find / -size +204800 查找大于100M的文件
find / -size -204800 查找小于100M的文件
find / -size 204800 查找等于100M的文件
find / -size +163840 -a -size -204800 查找大于80M而小于100M的文件
find / -size +163840 -a -type f|l|d 查找大于80M文件或软连接文件或目录
还有一个逻辑或使用-o,将-a换成-o
find /ect -name init -exec ls -l {} \ ; 将find /ect -name init得到的内容放到{}中,-exec(可以使用-ok,有确认信息)执行其后的命令,\转移符是符号执行命令本身含义,;是必须的结束标

3>,根据所属用户查找文件-user:
    find    /home    -user    root
4>,根据时间查找:以天(atime,ctime,mtime)或分钟(amin,cmin,mmin)条件,其中a--access文件被访问过,c-change文件属性(ls -l)被改变,m-modify文件内容被修改过
    find    -mtime -1    24小时之内修改过的文件
    find    -mmine +120    文件修改超过两小时的
5>,有些文件特殊,删除不掉,那么就是用:
find    /etc    -inum    12    -exec    rm    -rf    {}    \;        其中-inum是文件的inode节点.
6>,使用locate 文件或目录,返回找到的类似文件,需要配合updatedb(系统会定期更新文件目录数据库)命令,所以查找速度很快
7>,grep 字符串 文件路径,返回字符串在文件中的行并输出
   grep    tftp    /etc/services

17,使用man 命令/配置文件路径,来查看帮助信息,man的输出信息是借助于more的,所以more的参数都是可以用的;man默认是查看命令的帮助,省略了1,当命令和配置文件名字一样是需要使用man的类型
man 1 ls 命令帮助信息
man 5 /etc/services 配置文件帮助信息
18,info和man的使用方法一样,内容显示很整洁
19,如果只想知道一个命令是做什么的,使用whatis 命令;查看命令的选项使用命令 --help;查看配置文件说明:apropos 配置文件;其中whatis和apropos要配合makewhatis数据库使用.
20,查看shell内置命令帮助使用:help 命令
21,linux上的所有压缩包,都可以在windows上打开,反之不成立,比如rar文件:
1>,.gz的文件:
使用gzip filename压缩,不保留源文件,只能压缩文件
使用gunzip filename 解压缩文件,解压后压缩文件被删除
2>,.tar.gz文件:
使用 tar -zcvf demo.tar.gz demo将demo目录打包并压缩,-c打包tar,-v显示详细信息,-f打包文件名,-z压缩文件
使用tar -zxvf demo.tar.gz 解压缩文件
3>,.zip的文件,是Linux和Windows唯一默认都支持的压缩文件:
使用zip 文件名.zip 文件名或者zip -r 文件名.zip 目录,保留源文件
使用unzip 文件名.zip解压缩
4>,.bz2的文件,是gzip的升级,加-k选项可以保留文件,这种格式的压缩比非常好:
使用bzip2 -k 文件名.bz2 文件名
使用bunzip2 -k 文件名.bz2
22,可以向指定的在线用户发信息,比如write lcj>message...,ctrl+d结束;
可以发送广播消息,比如wall message...,在线用户都可以收到
ping -c 3 ip地址,三次后就结束,类似windows的;ping -s 65507 ip ,-s指定包的大小.
ifconfig eth0查看网卡eth0的信息;也可以暂时修改网卡的信息使用ifconfig eth0 ip地址.
23,关机命令:shutdown -h now立即关机.
reboot重启系统
24,一些shell技巧:
1>,Tab键用来进行提示补全;
2>,clear ctrl+l 清屏
3>,查看所有的命令历史列表:history;!命令列表中的序号,可以调用命令;
4>,ctrl+u删除光标前面所有的字符;
5>,别名的定义,查看,删除:
定义:alias copy=cp 或 alias rmd="rm -rf" 这里注意区别:单个命令直接赋值,命令组合要加""
查看:alias
删除:unalias copy
6>,输入输出重定向(标准输入0,标准输出1,标准错误输出2):
标准输出重定向:ll > /log,将ll数据写入到log中;date >> /log,将当前时间追加到log中(0>或0>>)
标准输入重定向:cat < /log 读取log数据(<或1<)
错误重定向:cp -R /usr /homework/usr 2>/err.log,拷贝/usr目录,当拷贝失败,错误信息写入/err.log中,注意2>/err.log要紧挨着
7>,;命令按顺序执行,比如:pwd;ls;date
8>,&&连接多个命令
9>,||连接多个命令,第一个失败,第二个才执行
25,vi/vim工作模式图:
[图片上传中。。。(2)]
使用:进入编辑模式,回车后就回到了命令模式.
set nu 或者set number 可以设置行号,便于确定文件的位置.

插入命令:
[图片上传中。。。(3)]

命令行模式下定位:
[图片上传中。。。(4)][图片上传中。。。(5)]

删除命令:
[图片上传中。。。(6)]

复制和剪切:
[图片上传中。。。(7)]
替换和取消:
[图片上传中。。。(8)]
搜索替换--/g替换时不需要用户介入,如果需要使用/c:
[图片上传中。。。(9)]

保存退出:wq 或者 shift zz; root和文件的所有者可以强制保存退出:wq!
当在vi中编辑文件时,可以把其他文件的内容导入进来:r 文件名
在vi中可以使用:!命令 来执行命令
在vi中可以将当前命令的结果导入到文件中:r !命令,比如将时间写入到文件中:r !date
在vi中定义快捷键:
比如插入#,使用:map ctrl+v+p I# 说明:使用ctrl+v+p输入^P或者用ctrl+v ctrl+p,I表示定位到当前行首并进入编辑模式,#是输入的内容,退出编辑命令;取消使用:unmap ^P
删除#,使用:map ctrl+v+r 0# 说明使用ctrl+r删除行首的#
添加邮箱,使用:map ctrl+v+e [email protected] 说明,使用ctrl+e在光标前面加入邮箱并退出编辑模式
连续行的注释:n1,n2s/^/#/g 说明在n1,n2行首加#
删除连续行的注释:n1,n2s/^#//g
当有一串很长的重复字符要输入时,可以使用:ab mail [email protected] 当输入mail回车时会被替换为[email protected];取消使用:unab mail
vi配置文件位置:~/.vimrc,可以在里面添加一些命令.

26,Linux系统引导流程:
[图片上传中。。。(10)]
说明:1>,固件是介于软件和硬件之间的,主要作用是加电自检,检测硬件的状态.
2>,Linux系统有两个时间:一个是date即软时钟,一个是固化在CMOS中的硬时钟hwclock,有时这两个时间不相同,会出现问题,所以要做时间同步.
当软硬时钟一方是对的,那么可以使用hwclock --hctosys(使用硬时钟同步软时钟) | hwclock --systohc(使用软时钟同步硬时钟).
当两个时钟都是错的,那就要分别设置然后同步:软时钟设置date MMDDhhmmyyyy.ss,硬时钟设置 hwclock --set --date="9/22/96 16:45:05"
3>,当POST执行完毕后,进入下一步MBR主引导记录,位于0磁头,0柱面,1山区,有三部分组成:bootloader(自举程序),partition table(分区表),magic number(结束标识字)
4>,grub是Linux的自举程序,其主要作用是加载Linux的内核,如图:
[图片上传中。。。(11)]
5>,加载完内核后,内核做两件事:(1),驱动硬件,即在os层面识别硬件,内核中很大一部分都是驱动程序;(2),启动init进程.
[图片上传中。。。(12)]
有图片可以看出,Linux内核是一个压缩的可执行文件,位于/boot目录下.
6>,init进程的工作原理,如图:
[图片上传中。。。(13)]
[图片上传中。。。(14)]
注意:pid为1的父进程pid为0,即内核调度器,主要负责cpu时间分配和进程切换.
7>,inittab文件解释,
[图片上传中。。。(15)]
上图中,2和3唯一区别是,2没有启动nfs服务,该服务可以实现Unix和Linux之间文件共享,但是安全性很差;4级别是用户可以自己定义的级别;5级别是系统默认的多用户界面模式;6级别是重启.
8>,查看运行级别和切换运行级别:
查看:runlevel
[图片上传中。。。(16)]
切换运行级别: init [0123456Ss] 或者 telinit [0123456Ss] ,其中telinit是init的软连接,s或S表示级别1,即单用户模式.
9>,只查看文件中有效的数据,排除注释,可以使用grep -v "^#" /etc/inittab | more,如图:
[图片上传中。。。(17)]
使用man inittab,查看配置文件的帮助信息,,如图:
[图片上传中。。。(18)]
如图,当runlevels为空时,表示执行0-6这7个运行级别.
[图片上传中。。。(19)]
[图片上传中。。。(20)]

                    [图片上传中。。。(21)]
                    [图片上传中。。。(22)]
                    可以使用ctrl + alt + F1-F6 在X window和命令终端之间切换,ctrl + alt + F8 回到x window.
                    [图片上传中。。。(23)]
                    上图中的文件命名有一定的规律:S|K + 数字 + 脚本名称,其中S表示要启动的脚本,K表示要关闭的脚本,数字表示优先级,越小的优先执行,如果将S或K写成小写的就不会执行了.
                    
                    总结:
                    [图片上传中。。。(24)]
            10>,系统默认安装的服务位于/etc/init.d目录下,如图:
                    [图片上传中。。。(25)]
                    使用方法:/etc/init.d/文件名,回车会有帮助提示的.
            11>,几种添加自启动服务的方式:
                    方式一:使用ln -s,如图:
                                [图片上传中。。。(26)]
                                说明:先编写一个msg.script脚本,然后给这个脚本执行权限,然后将这个文件放到对应的运行级别目录下,并且做一定格式的命名.
                    方式二:使用chkconfig,如图:
                                [图片上传中。。。(27)]
                    方式三:使用ntsysv,弹出菜单,来关闭服务,如图:
                                [图片上传中。。。(28)]

                12>,使用dmesg命令查看,在内核驱动硬件时的信息,比如:
                        [图片上传中。。。(29)]
                13>,grub的配置文件位置:
                        [图片上传中。。。(30)]
                        文件内容:
                        [图片上传中。。。(31)]
                        [图片上传中。。。(32)]
                        default=0,默认启动第一系统,当有多个系统时,该文件有过个title
                        timeout=5系统等待的时间,单位:秒
                        splashimage=..是grub的背景图片(640x480,色深14,因为这时没有提供显卡支持),可以修改,其中(hd0,0)就是指第一块硬盘的第一个分区,这里是/boot分区.

27,[图片上传中。。。(33)][图片上传中。。。(34)]

28,rpm软件包管理:
[图片上传中。。。(35)]
[图片上传中。。。(36)]
不建议使用选项--nodeps,因为这样依赖于我们即将卸载的其他软件将不能正常使用.
[图片上传中。。。(37)]
ps:(1),在centos6.5中二进制rpm包,位于/mnt/cdrom/Packages目录下.
(2),rpm -ivh 软件包的名字,其中-i表示安装,-v显示安装详情,-h显示安装进度.
[图片上传中。。。(38)]
ps:(1),--prefix选项一般不用,即使用了,可能也没效果,因为rpm软件在制作时已经规定好了,安装位置;
(2),--test选项很有用,比如查看当前安装软件是否需要依赖包,软件包是否冲突,是否完整等.
[图片上传中。。。(39)]
ps:--replacepkgs选项可以覆盖安装.
[图片上传中。。。(40)]
ps:--replacefiles可以解决文件冲突问题.
[图片上传中。。。(41)]
ps:--nodeps 选项可以忽略依赖强制安装,但是很可能软件不能使用
[图片上传中。。。(42)]
[图片上传中。。。(43)]
[图片上传中。。。(44)]
[图片上传中。。。(45)]
ps:校验一个文件的信息.
[图片上传中。。。(46)]
ps:提取文件

29,yum包管理--自动解决包依赖关系和容易软件升级.
安装:yum install 软件包名,比如yum install sudo
检查软件包是否需要升级: yum check-update 软件包名,比如 yum check-update sudo
升级软件: yum update 软件包名,比如yum update sudo
检查yum源软件包列表:yum list,比如yum list | more ,yum list | grep samba
软件包信息:yum info 软件包名 ,比如yum info sudo
卸载软件包:yum remove 软件名,比如yum remove sudo
帮助信息:yum -help,man yum.
30,源代码安装的实例:
[图片上传中。。。(47)]
其他的软件安装都一样,在安装过程中可能会报错,主要是缺少依赖工具或者安装包.
31,脚本(有shell和java两种)安装实例:
[图片上传中。。。(48)]
32,用户管理及相关配置:
[图片上传中。。。(49)]
1>,用户信息文件/etc/passwd的格式:
[图片上传中。。。(50)]

    用户分类:
        [图片上传中。。。(51)]
    伪用户:
        [图片上传中。。。(52)]
    
    用户组:
        [图片上传中。。。(53)]
    [图片上传中。。。(54)]
    查看passwd文件,可以知道其对所有用户都有读权限,最早的时候密码确实位于该文件中,这是很危险的,所以这里只留下一个保留位.

2>用户密码文件/etc/shadow
内容格式为:root:$6$EI8VKpMSNee3RaoO$zEZvLD1c5VDKcmliPvRihMmWaoZIPwFHAISTaDwYctlawPU4S3s06BID.aarNxC4jpmKP8dlB/Rm6T7NI9n/D0:16790:0:99999:7:::
[图片上传中。。。(55)]
ps:这里的密码是加密的,如果将密码删除,那么用户就不需要密码就可以直接登录,当忘记密码时,可以将其删除.
最后一次修改时间:是注册时间减去1970.1.1之间的天数.
可以使用vi在/etc/passwd和/etc/shadow中手工添加用户,同时将/etc/skel中的所有文件拷贝到/home/用户名目录下.
在终端和远程登录之前提示信息,可以在/etc/issue中修改,不要暴露版本号,以防危险;而/etc/motd是在用户登录成功后才会显示的信息.
为什么普通用户可以修改密码?
[图片上传中。。。(56)]
因为passwd命令有很特殊的权限,当执行命令时,是以root身份执行的.
授予setUID的方式:用户[图片上传中。。。(57)],组[图片上传中。。。(58)],同时授予用户和组权限chmod 6755
3,组文件/etc/group:
[图片上传中。。。(59)]
[图片上传中。。。(60)]
ps:z组密码的作用让不是该组的用户拥有该组的权限.
3,添加和删除组的命令的用法:
[图片上传中。。。(61)]
4,添加用户命令:
[图片上传中。。。(62)]
[图片上传中。。。(63)]
给用户设置密码passwd 用户名:
[图片上传中。。。(64)],
5,修改用户信息:
[图片上传中。。。(65)]
[图片上传中。。。(66)]
[图片上传中。。。(67)]
说明:
pwck:该命令检查用户的passwd和shadow文件是否正确
vipw:命令编辑passwd文件,会锁定文件,别人无法编辑.
6,给用户组设置密码和修改:
[图片上传中。。。(68)]
[图片上传中。。。(69)]
如果几个用户对某个目录有写权限,那么就可以将这几个用户添加到同一个组中,给组写权限,过程如下:
[图片上传中。。。(70)]
7,禁用恢复用户
[图片上传中。。。(71)]
禁用用户只是在shadow文件的密码位前面加了!!.
8,删除用户
[图片上传中。。。(72)]

批量添加用户:
[图片上传中。。。(73)]
    ps:newusers < user.info pwunconv chpassed < pass.info pwconv
    另一种是使用shell脚本

33,进程管理的一些概念和命令以及技巧:
父进程和子进程之间的关系体现:
[图片上传中。。。(74)]

前台进程和后台进程的区别:
[图片上传中。。。(75)]

进程的状态:
[图片上传中。。。(76)]
[图片上传中。。。(77)]
[图片上传中。。。(78)]

查看当前用户登录信息:
[图片上传中。。。(79)]
[图片上传中。。。(80)]
    其中load average的值除以3,结果小于0.8就认为正常,否则就是负载过重.

查看系统的进程状态ps以及常用的选项:
[图片上传中。。。(81)]
[图片上传中。。。(82)]
[图片上传中。。。(83)]
[图片上传中。。。(84)]
[图片上传中。。。(85)]

查看系统中进程的树状信息:
[图片上传中。。。(86)]

kill杀死进程的原因以及使用方法:
[图片上传中。。。(87)]
[图片上传中。。。(88)]

改变进程的优先级:
[图片上传中。。。(89)]

[图片上传中。。。(90)]

[图片上传中。。。(91)]

top命令使用:
[图片上传中。。。(92)]
[图片上传中。。。(93)]

34,linux中的计划任务命令以及使用:
[图片上传中。。。(94)]
[图片上传中。。。(95)]
[图片上传中。。。(96)]
[图片上传中。。。(97)]
[图片上传中。。。(98)]
ps : 交互方式想要结束时:ctrl + d
[图片上传中。。。(99)]
[图片上传中。。。(100)]

[图片上传中。。。(101)]

[图片上传中。。。(102)]
[图片上传中。。。(103)]
时间编辑技巧:把知道的时间按对应的位置填上,不知道的用通配符*代替
    [图片上传中。。。(104)]
    
    [图片上传中。。。(105)]
    其中standalone是驻留系统中,占用资源,接受客户端的请求,比如tomcat等(响应快,大量的访问).
            xinetd/inetd互联网守护进程,对应/etc/xinetd.d目录,当对应端口的请求发过来时,启动对应的服务接受请求,然后关闭服务.

34,文件系统构成:
[图片上传中。。。(106)]
[图片上传中。。。(107)]
[图片上传中。。。(108)]
df -h 更符合人的阅读习惯,df -m 以兆字节显示
du -sh /etc统计目录或者文件大小
[图片上传中。。。(109)]

[图片上传中。。。(110)]
块设备(b),字符设备(c)--打印机

[图片上传中。。。(111)]
假如新添加的硬盘位sdb,那么使用dMsg | gerp sdb就可以看到对应的信息了
fdisk -l /dev/sdb和dMsg差不多
fdisk /dev/sdb分区:m--帮助,p--打印分区表,n--添加新的分区,t--改变分区文件系统类型,w--保存退出,q--退出不保存
mkfs.ext4 /dev/sdb1格式化文件系统 
mount /dev/sdb1 /web 挂载分区

文件/etc/fstab说明(六部分组成):
[图片上传中。。。(112)]
物理分区/卷标    挂载点    文件系统    缺省设置    系统启动时是否检测(1:检测,0:不检测)    启动顺序(0:不启动,1:优先启动,2:其次启动)
例子:[图片上传中。。。(113)]
查看是否有卷标:e2label /dev/sdb1,输出为空既没有卷标,指定卷标:e2label  分区路径    卷标名   

手动增加swap空间大小,步骤如下:
[图片上传中。。。(114)]
bs:块大小     count :文件大小

磁盘配额实验:
[图片上传中。。。(115)]
2中的-cvuga 表示为所有分区创建用户用户组配置文件并输出详细信息.
[图片上传中。。。(116)]
可以参考有道云笔记: http://note.youdao.com/noteshare?id=41fcd8b516a718a97aebd39bd57d7247&sub=D25E23E0E92C4791960D9D08B7B0B0B3

你可能感兴趣的:(Linux学习笔记)