2016年7月21日学习笔记
Linux安装以后出现的文件目录的作用:
文件系统的类型
LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。
普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。
目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名的唯一地方,可用ls列出目录文件。
连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"->"指向所连接的文件。
特殊文件:LINUX的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,则一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。LINUX无C:的概念,而是用/dev/had来自第一硬盘。
对于linux新手来说,最感到迷惑的问题之一就是文件都存在哪里呢?特别是对于那些从windows转过来的新手来说,linux的目录结构看起来有些奇怪哦。所以,在这里讲一下linux下的主要目录以及它们都是用来干什么的。
/
这就是根目录。对你的电脑来说,有且只有一个根目录。所有的东西,我是说所有的东西都是从这里开始。举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/root
这是系统管理员(root user)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。
/bin
这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系 统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。
/etc
这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。
/dev
这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。想连线打印机吗?系统就是从这个目录开始工作的。另外还有一些包括磁盘驱动、USB驱动等都放在这个目录。
/home
这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
/tmp
这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。
/usr
在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如像游戏阿,一些打印工具拉等等。/usr目录包含了许多子目录: /usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;/usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是“新立得”吧)会自动帮你管理好/usr目录的。
/opt
这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。
举个例子:刚才装的测试版firefox,就可以装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面就包含了运 行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录即可,非常简单。
/usr/local
这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。
/media
有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
补充:
/bin
系统所需要的那些命令位于此目录,比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里(/usr/bin和/usr/sbin 类似与“/”根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。 )。
/boot
Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。
/lost+found
在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损 坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
/mnt
这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎 么定义了;比如光驱可以挂载到/mnt/cdrom 。
/opt
表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。
/proc
操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。
/sbin
大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的;我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。
/usr
这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。 如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include。
/var
这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地;
关于/opt目录的一个小技巧
在Linux中,/opt目录是存放某些大型软件或者某些特殊软件的目录,比如谷歌浏览器(Google Chrome)默认就是安装在/opt中。但是我们一般不会把opt单独分在一个区,因为/opt中大多数时候是空的,即使安装了软件也不会太多,而且有 些软件的容量还比较大,这样就会占用/的容量,我们可以在其它你愿意的地方建立一个目录来将/opt“转移”到别处,比如我的的/usr是单独分在一个 区,容量有50G,这么大的空间不要浪费了不是?而且/usr本来就是安装软件的地方,所以我可以/usr下建立一个叫opt的文件夹,然后右键点击这个 /usr下的opt,选择“创建链接”,得到一个名为“到 opt 的链接”文件,然后把这个文件剪切到/下,将原来的/opt删除,再将“到 opt 的链接”改名为opt就可以了,以后我们安装在/opt的软件实际上是安装到了/usr/opt下(实际上是一个符号链接)。
/usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。这个目录下面有子目录。自己看看吧。
/usr/share 系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
/var/log 系统日志存放,分析日志要看这个目录的东西;
/var/spool 打印机、邮件、代理服务器等假脱机目录;
SSH介绍
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
远程连接Linux服务器
默认情况下最小化安装Linux SSH默认是已经安装的,默认SSH 服务也是开启的,可以通过命令查看其状态:
Centos 6.8命令:
[[email protected] tmp]# service sshd status
openssh-daemon (pid 2212) is running...
[[email protected] tmp]# chkconfig | grep sshd
sshd 0:off1:off2:on3:on4:on5:on6:off
Centos 7命令:
[[email protected] ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2016-07-22 08:13:51 CST; 2h 26min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1454 (sshd)
CGroup: /system.slice/sshd.service
└─1454 /usr/sbin/sshd -D
Jul 22 08:13:51 Centos7.local systemd[1]: Started OpenSSH server daemon.
Jul 22 08:13:51 Centos7.local systemd[1]: Starting OpenSSH server daemon...
Jul 22 08:13:51 Centos7.local sshd[1454]: Server listening on 0.0.0.0 port 22.
Jul 22 08:13:51 Centos7.local sshd[1454]: Server listening on :: port 22.
Jul 22 08:30:38 Centos7.local sshd[3469]: Accepted password for root from 192.168.71.1 port 49798 ssh2
[[email protected] ~]# systemctl list-unit-files *sshd*
UNIT FILE STATE
anaconda-sshd.service static
sshd-keygen.service static
sshd.service enabled
[email protected] static
SSH连接工具
Putty Xshell SecureCRT 8.0
注意:需要使用SSH工具需要注意一下几点:
1. 服务器上SSHD服务是否开启;
2. 客户端连接服务器SSHD的端口号是否正确;
3. 用户名和密码或秘钥是否正确。
关于终端基本知识
基本概念:
服务器非必要部件;
查看当前连接的终端: w命令:
[[email protected] ~]$ w
11:20:23 up 3:06, 4 users, load average: 0.21, 0.17, 0.26
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root tty1 :0 08:14 3:06m 6.99s 6.99s /usr/bin......
root pts/0 :0.0 11:12 7:31 0.00s 0.00s /bin/bash
root pts/1 192.168.71.1 08:19 14:43 0.64s 0.64s -bash
chen pts/2 192.168.71.1 11:05 0.00s 0.15s 0.03s w
/dev/console : 只有单用户模式下才会显示TTY为 console (控制台的意思)
/dev/tty# : 虚拟终端,附加在物理终端之上的以软件的方式虚拟实现的终端
tty1 : 图形界面;
tty2--tty6 :字符界面
/dev/pts/# : 模拟终端,图形界面打开的命令行及基于SSH协议或Telnet协议等远程打开的界面。
图形界面:
GUI:图形用户接口
Desktop:
GNOME (C ,图形库GTK)
KDE (C++ , 图形库GT)
XFCE(轻量级桌面)
CLT:(命令行接口)
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Shell 程序
同Linux本身一样,Shell也有多种不同的版本。主要有下列版本的Shell:
Bourne Shell:是贝尔实验室开发的。
BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。
Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
C Shell:是SUN公司Shell的BSD版本。
Z Shell:The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。
Linux 部分基础命令
查看系统支持的shell
[[email protected] ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin ---系统账号发起进程使用,不用登录系统
/usr/bin/sh
/usr/bin/bash ---Linux 默认 shell
/usr/sbin/nologin ---系统账号发起进程使用,不用登录系统
/bin/tcsh
/bin/csh
提示符变量:$PS1
[[email protected] ~]# echo $PS1
[\[email protected]\h \W]\$
命令的类型:type COMMAND
内置命令;
内核自带的命令,如:cd , type (内部命令在内存中)
外部命令:echo "$PATH" --查看命令文件默认路径
内核不自带的命令,如:(外部命令使用一次后回 缓存到内存中 hashed )
[[email protected] boot]# type chmod
chmod is /usr/bin/chmod
[[email protected] boot]# type who
who is /usr/bin/who
[[email protected] boot]# who
root :0 2016-07-21 14:02 (:0)
root pts/1 2016-07-21 14:12 (192.168.71.1)
[[email protected] boot]# type who
who is hashed (/usr/bin/who)
命令路径变量:$PATH
echo $PATH
[[email protected] boot]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
直接输入命令命令按路径名称顺序搜索;
如果直接使用命令 /usr/bin/chmod 000 bash.txt
which:查看外部命令
which ls
which cd (cd是内部命令,是无法找到cd这个文件的)
hash缓存数据:
hash -d cat (删除缓存中的指定命令)
hash -r 清空所有缓存
命令查找顺序: 内置 , hash , $PATH
禁用内部命令
enable -n cd
启用内部命令
enable cd
内核文件的地址:
[[email protected] boot]# ll -h /boot/vmlinuz-3.10.0-327.el7.x86_64
-rwxr-xr-x. 1 root root 5.0M Nov 20 2015 /boot/vmlinuz-3.10.0-327.el7.x86_64
which :命令(二进制文件)在哪里
whereis :命令(二进制文件)在哪里,帮助文档在哪里
windows也有变量路径
set path(Windows变量路径,可以查找当前目录下的命令,Linux不会找当前目录下的命令,命令查找顺序: 内置 , hash , $PATH)
设置计算机时间 date:
系统时钟:date ,
硬件时钟:clock ,hwclock
-s : 以硬件时钟为准,校正系统时钟
-w : 以系统时钟为准,校正硬件时钟
设置计算机时间:
date : 08 10 10 30 2000.30
月 日小时分 年 秒
screen软件使用
(普通用户也可以使用screen)
实用性1:如果有两个人同时用同一个账户连接到一台Linux的服务器上,其中一个人需要实时看到另一个人如何操作,可以做如下操作。
用户A :
screen -S helper (新建一个连接,连接名称为 helper)
用户B
screen -ls (查看session 连接数)
screen -x helper (连接到 helper的这个连接)
实用性2 :如果远程连接到远程服务器,服务器上需要备份需要3小时,可以通过远程连接到服务器,开一个screen的程序,运行程序,在退出screen的界面,让screen后台运行;命令如下:
1. screen :运行一个screen 进程;
2. 运行需要执行的命令
3. ctrl+a d :剥离当前screen,
4. screen -ls :查看session列表
5. screen -r [session] :恢复session的回话
echo : 回显命令使用
功能说明:
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
语法: 该命令的一般格式为: echo [ 参数 ] 字符串
字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
参数:
-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\0nnn 插入nnn(八进制)所代表的ASCII字符;
\xHH插入HH(十六进制)所代表的ASCII字符
–help 显示帮助
–version 显示版本信息
举例:
[[email protected] ~]# echo -n "aa bb cc" -->不换行输出
aa bb cc[[email protected] ~]#
[[email protected] ~]# echo "echo $UID" -->双引号 弱引用,变量转换为其值
echo 0
[[email protected] ~]# echo ‘echo $UID‘ -->单引号 强引用,变量不转换为其值
echo $UID
[[email protected] ~]# echo `echo $UID` -->顿引号 强引用,变量和命令都执行(命令引用)
0
[[email protected] ~]# echo $(echo $UID) -->括号引用,变量和命令都执行(命令引用)
0
-e : 参数来打印转义字符:
echo -e "aaa\c"
echo -e "aaa\a"
echo -e "aaa\bxxx"
echo -e "aaa\nxxx"
echo -e "aaa\rxxx"
echo -e "aaaa\txxx"
echo -e "\0101"
echo显示带颜色,需要使用参数-e
格式如下:
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
例如:
echo -e "\033[41;37m TonyZhang \033[0m"
其中41的位置代表底色, 37的位置是代表字的颜色
注:
1、字背景颜色和文字颜色之间是英文的“""”
2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
下面看几个例子:
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
控制选项说明 :
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
其它学习的小命令:
Cal -显示日历
Nano - 文本编辑
rpm -i 安装RPM安装包
/etc/issue
配置文件可以修改登录提示信息 :可以修改欢迎界面文字!