您的位置:首页 > 运维架构 > Linux

Linux基础知识

2017-10-14 15:36 218 查看
一、Linux基本概念

     本文主要包括系统命令、系统管理、软件包管理dpkg、网络配置及应用等

对Linux系统的几条命令:

lsb_release  -a  查看ubuntu版本

uname -a 查看ubuntu内核

二、x-window与桌面环境KDE,gnome

发行版本与内核关系:linux内核、驱动-》系统工具、库-》shell、视窗系统

X-window是unix/linux默认图形界面系统,包括X客户端、桌面环境、窗口管理器、图形库、X服务器、显卡

GNOME是以GTK+为基础,包括版本:Debian、redhat、ubuntu

KDE是以QT为基础,包括版本:Fedora、Arch、CentOS

三、Linux基本命令使用

linux的组织结构:硬件-》系统内核-》shell命令解释器、外围应用程序

shell作为命令语言,也可以作为程序设计语言

shell语言的解释有两种方式:一种是交互式,一条一条; 一种是批处理,一次性执行脚本里的命令

1、   linux有几种常见的shell:

(1)bash, linux默认使用的shell

(2)sh

2 、  常用的linux命令:

(1)cd、ls、pwd、touch、mkdir、chmod

(2)cp、mv、rm

(3)cat、more(多篇幅显示内容)、less、head(只显示头几行,如head -n 3 convert.py)、tail(只显示后几行,如tail -n

 3 convert.py)

(4)ln 建立连接文件,分为两种:

         一种是建立硬连接,此时两个文件大小相同,内容相同,如有一个文件a.py,再建立一个与a.py相同的文件b.py,则命令为:ln  a.py   b.py,此时b.py是a.py的一个硬连接,如果改变a.py则b.py也会跟着改变,此时ls -la看不出任何区别。

        一种是软连接,创建的连接文件大小固定,相当于另一个文件的快捷方式,当访问软连接时,则相当于访问另一个链接文件,命令:ln -s a.py c.py,此时操作c.py和操作a.py相同

(5)wc [-lcw]统计文件的行数、字符数、单词数

(6)which  可执行程序的路径和它的别名

(7)whatis 命令的简单说明

(8)whereis 命令的源程序或手册的位置

3、压缩与解压

对于tar及tar.gz文件的压缩与解压

压缩: tar zcvf  a.tar.gz  /dir1  /dir2  /dir3, 也可以 tar  cvf  a.tar  /dir1 /dir2  /dir3

解压: tar zxvf a.tar.gz,  也可以 tar  xvf  a.tar.gz

对于.gz   .z   .tgz格式的文件

gzip

4、系统相关

(1)time、date、 uname、  lsb_release

(2)du  统计文件和目录中所占磁盘空间大小

(3)dmesg   显示内核状态信息

(4)uptime   显示时间、系统运行时间、用户连接、负载

(5)who/w   显示登录的用户信息

(6) whoami/hostname  whoami显示用户名,hostname显示系统host name

(7)cal/bc   日历和计算器

(8)top  查看cpu使用率

(9)free 查看内存和交换空间

5、网络相关

(1)ping   检测网络连接

(2)ifconfig  配置网络 可以直接使用显示系统网络配置情况,也可以通过修改配置:ifconfig  enss 192.168.21,158 netmask 255.255.255.0   up,其中up是将其激活,down是关闭

(3)netstat   查看个网络端口的命令

(4)service network start 启动某个服务

(5)ps -A显示所有的进程, 可以通过管道查看一类,如  ps -A | grep net

四、Linux高级命令简单使用

1、查找

(1)搜文件:find  dir   -name   filename

find /usr/  -name hello.c   这种是严格匹配搜索文件hello.c

find /usr/  -iname  hello.c   这种是不区分大小写搜文件hello.c

同时find支持文件名的正则化表示搜索,如*ell*

(2)搜文本内的内容:grep  string filename,  grep  string -r  dir

grep "ten"  a.py

grep "ten"  -r ./

grep 'ten"  -r  -c  ./  只显示行号,不显示内容

(3)类似sourceinsight功能

cscope  -Rk

2、管道 |

终端包括:stdout    stdin  stderr

管道改变输出的接收终端, 如ps  -A是将内容输出到终端stdout, 要改变可使用“|”,左边可以是标准的输出, ps -A, 右端是标准的输入grep

ps -A | grep usb

cat file | grep hello

3、 重定向

>   输出重定向到一个文件或设备

>!  输出重定向到一个文件或设备,强制覆盖原来的文件

>>  输出重定向到一个文件或设备,追加到原来的文件

<    输入重定向到一个程序

五、 shell脚本入门

通过环境变量查看环境中的默认的shell,即: echo $SHELL 输出为:/bin/bash,当前环境默认使用bash,通过ls  /bin/*sh可以查看系统中的所有shell解释器

shell执行脚本如:bash  hello

一般脚本文件后缀名用.sh,但不是必须的,任何文本文件都可以作为脚本文件执行。可在脚本文件中使用命令指定用什么shell解释器来解释。使用#!/bin/bash

如文件:

#!/bin/bash

TIME=$(date) #不能有空格

echo now is : $TIME

for i in (1..10)

do

      echo $i

done

六、环境变量

在shell中可定义变量, PH=7.0,echo  $PH,这个PH即可看为环境变量。系统中为了方便预定了很多环境变量。如:

echo  $PATH   可执行文件所在的位置

echo  $HOME  用户目录

echo $LOGNAME  登录的用户名

echo $SHELL 当前使用的shell解释器

1、   环境变量的生成:

     Linux启动时,初始化或启动脚本会创建大量环境变量,并对其赋值

     每次用户启动一个新程序,新程序会继承启动程序的环境变量

     shell启动过程中,不同登录用户启动不同脚本,生成一些环境变量

     环境变量根据用户不同发生变化

提示符:

    一般用户为:$

   root用户为:#

2、shell启动过程:

(1)内核镜像  /boot/unlinux

(2)内核启动后,开启init进程

(3)进程init扫描/etc/inittab,找出可用终端及其属性,一旦找到活动的终端,mingettv将会启动login界面

(4)将用户和口令传到login,匹配成功,自动转到$HOME

(5)将控制权交给所启动的任务及用户

(6)shell将会读取文件/etc/profile和~/.profile

(7)其他用户登录时会启动一些脚本/etc/profile.d/

(8)有的系统中有/etc/bashrc脚本,在ubuntu中是/etc/bash.bashrc脚本,系统中任何用户每次启动bash shell时都会执行,系统登录用户时也会执行

(9)每个用户的home目录都包含一个.bashrc脚本,用户登录或用户下启动shell时都会执行

(10)脚本启动流程大致是   /etc/profile->~/.profile->/etc/bash.bashrc->~/.bashrc

(11)有些环境变量,你需要考虑是全局的还是当前用户独享

3、如何声明一个变量

(1)修改/etc/profile或/etc/bash.bashrc脚本, 对所有用户都有效, 注意修改profile脚本需要重新source

(2)在~/.bashrc下用export声明全局变量

linux可执行命令依靠配置文件去读取路径

声明的全局变量对所有用户都有效

linux下使用“:”来分割路径

(3)在/etc/bash.bashrc中添加变量Q=12,两种方法可以使其生效,一是切换用户或打开shell,二是source  bash.bashrc,此时切换到root用户下也是有效的,说明是全局的,切换用户可以用sudo -s,  su  fire

(4)在/etc/profile设置变量

在文件末尾加入W=100,此时echo $W是没有值的,由于profile只是在系统启动时执行一遍,如果想使其生效则使用source /etc/profile,如果切换用户还需source一下,所以在bashrc中添加环境变量比较方便。

(5)在~/.bashrc中添加,Q=12,此时开启一个shell时本用户有值,而切换到su  root用户时echo  $Q没有值,即该文件中的变量只在当前用户是有效的,如果想声明为全局的,则需要   export  Q=12

这里修改~/.bashrc文件不需加sudo,是因为修改的是该用户的文件, 但如果修改公有文件,如root用户/etc下的文件需加

sudo。

(6)PATH环境变量

vim ~/.bashrc

export PATH=$PATH:/home/code/bin

source ~/.bashrc

echo $PATH

如果有多个版本的程序,则可以通过以下形式实现程序的不同调用顺序:

export PATH=$PATH:/home/code/bin

export PATH=/home/code/bin-new:$PATH

七、文件系统管理

1、文件系统基本概念

用户空间:shell命令或应用程序-》系统调用函数    调用内核空间

内核空间:系统调用函数-》虚拟文件系统VFS->EXT2文件系统-》通用块层-》I/O调度层-》IDE接口  -》块设备

                                                                        -》FAT文件系统   -》                                  -》SCSI接口

                                                                

                                                                         -》proc文件系统      -》内存缓存区

                                                                         -》devfs设备文件

2、文件类型分类

一切皆文件:

普通文件

目录

链接文件       

设备文件

套接字

管道

3、Linux目录介绍

tree -L 1

/bin 二进制执行命令

/dev  设备特殊文件

/etc   启动配置文件

/home   用户主目录的基点

/lib   标准程序设计库, 又叫动态链接共享库

/sbin   超级管理命令,这里存放的是系统管理员使用的管理程序

/root   系统管理员的主目录

/mnt  系统提供这个目录让用户临时挂在其他文件系统

/lost+found  平时为空,系统非正常关机时文件存在这里

/proc  虚拟的目录,是系统内存映射  可通过访问该目录获取系统信息

/var  某些大文件的溢出区

/usr   最庞大的目录,用户的程序装载路径

八、用户帐户管理

1、用户和用户组

用户:

管理员root:具有系统的所有管理权限, uid为0

系统用户:保障系统运行的用户,uid1-499

普通用户:部分权限受限, uid范围500-60000

用户组:

普通用户组:可加入多个用户

系统组:一般加入一些系统用户

私有组:创建用户时,若没有知名所有组,则会定义一个私有组,名称与用户名相同,当把其他用户加入到私有组,私有组就变成普通用户组

2、用户常用配置文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: