一、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、用户常用配置文件