Loading

Linux-基本操作

Linux



启动顺序

  • 内核引导
    通常从磁盘启动,然后读入/boot目录下的内核文件
  • 运行init
    init进程为所有进程的初始进程,首先要读取配置文件/etc/inittab
    init进程用于管理需要开机启动的程序,称之为“守护进程”
    对于不同的运行级别,会有不同的开机启动程序(启动为桌面是其中一种运行级别)
  • 系统初始化
    在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit, 而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行 级别都要首先运行的重要脚本
  • 建立终端
    init接下来会打开6个终端,以便用户登录系统
    其中一个就是文本登录界面
  • 用户登录系统

包含了一下三种方式

  • 命令行登录
  • SSH登录
  • 图形界面登录
  • 关机
	sync # 将数据同步到硬盘
	shutdown -h 10 'note' # 在十分钟后关闭,并且显示一条note
	shutdown -h now # 立即关机
	shutdown -h 20:25 # 在20:35关机
	shutdown -h +10 # 在10分钟后关机
	shutdown -r now # 系统立即重启,可以套用以上的时间格式
	halt # 相当于shutdown加上power off

系统目录

	ls / # 查看根目录
	ls . # 查看当前目录
	ls .. # 查看上一级目录 

以下以WSL为例进行解释

  • /bin 存放经常使用的命令(Binaries)
  • /boot 存放一些与启动相关的核心文件
  • /dev 系统连接的外部设备(Device),包含了loop,tty等等,在Linux中访问设备和访问文件的形式是相同的
  • /etc 存放系统管理的配置文件(Etcetera)
  • /home 用户的主目录,包含了各个用户的个人文件夹,一般只有一个用户,就是当前登录的用户
  • /lib 存放系统的动态连接共享库(Library),也有一个lib32,lib64,libx32的文件夹
  • /lost+found 一般为空,用于存放错误内转储文件,需要较高权限打开
  • /media 系统自动识别的外部挂载设备
  • /mnt 临时挂载的内容
  • /opt 系统额外安装的软件(optional)
  • /proc 存放当前内核运行状态的一系列特殊文件,这个目录的内容存放在内存里(process)
  • /root 该目录为系统管理员的用户主目录,需要较高权限打开
  • /sbin 系统管理员的系统管理程序(superuser binary)
  • /srv 服务启动后需要提取的数据
  • /run 临时文件系统,存储系统启动以来的信息
  • /sys sysfs 针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统
  • /var 各种需要修改的文件
  • /usr 用户的应用程序和文件,(unix shared resources)
  • /usr/bin 用户安装的应用程序
  • /usr/sbin root用户安装的高级程序
  • /usr/src 内核源代码

远程登录

一般是通过SSH完成远程连接,默认端口号为22,同时要输入IP address,用户名,密码
可以通过以下方式查看IP地址

	sudo apt install net-tools # 首先可能需要安装网络工具
	ifconfig # 查看网络情况,寻找服务器IP

可以通过以下方式直接在终端(shell)进行登录

	ssh -p 22 username@ip # 同时输入端口号,服务器用户名及服务器IP

文件属性

通过以下方案查看文件信息

	ls -l /bin # 查看该目录下的文件详细信息
	ll /bin # 效果同上

以下为文件属性的解释

	lrwxrwxrwx 1 root root 7 Aug  5 05:39 /bin -> usr/bin/
	# l 表示链接文件(link file),d表示目录,-表示文件,b表示存储设备,c表示串口设备
	# rwxrwxrwx 表示文件所有者,文件所有者所在组,所有人对应的读,写,执行的权限
	# 1 表示硬链接个数
	# root 表示用户名
	# root 表示用户的组名
	# 7 表示文件大小,KB
	# Aug  5 05:39 表示文件最后修改时间
	# /bin -> usr/bin/ 因为是链接文件,此处指明了指向的位置,其他文件会显示文件名

以下为文件属性更改方式

	chmod u=rwx,g=rx,o=r 文件名 # 未出现的为不包含权限
	chmod -r xyz 文件或目录 # 注意此处使用了数字和来表示权限,r为4,w为2,x为1
	chgrp -r 属组名 文件名 # 更改文件的组名,R表示递归更改,当操作某个目录时,目录下的文件属性都会得到更改
	chown –r 属主名 文件名 # 更改文件的所有者名称
	chown -r 属主名:属组名 文件名  # 同时更改文件所有者名称和所属组名称

文件操作

文件或目录查看

	ls -adl 目录名
	# list files
	# a列出所有文件,包括隐藏文件
	# -d列出目录本身,而不是目录内的文件
	# -l列出更详细的信息,包括了属性和权限
	
	cd 目录 
	# 变更工作目录
	# change directory
	
	pwd
	# print working dictionary
	

文件操作

	touch 路径
	# 创建文件
	# 可以直接是文件名,意思是在当前目录下创建这个文件,需要有后缀
	# 可以同时给出多个文件名
	vim 路径
	# 可以实现同样的功能
	
	mkdir -mp 目录名
	# make directory
	# 在当前工作目录下创建一个新目录
	# -p可以一次性创建一个多级目录
	# -m配置文件的权限
	
	rmdir -p 目录名
	# remove directory
	# 删除目录,注意只能删除空目录
	# -p可以删除多级目录,包括上级目录
	
	rm -flr 文件或者目录
	# remove directory
	# -f 强制删除,若元素不存在,也不报错
	# -i 在删除前进行询问
	# -r 递归删除
	
	cp -adfilprsu 来源 目标
	# copy
	# -a 相当于所有
	# -d 来源为link,则复制link属性,而非指向的文件本身
	# -f 强制复制,目标文件存在,则移除再复制(也就是替换)
	# -i 若目标存在,在覆盖前先询问动作的进行
	# -l 进行hard link的创建,而非复制文件本身
	# -p 连同文件的属性一起复制,而非使用默认属性
	# -r 递归复制,用于复制目录及其下属文件
	# -s 复制称为symbolic link,也就是捷径文件
	# -u 若目标文件较来源文件旧才进行替换
	
	mv -fiu 来源 目标
	# 剪切
	# -f 强制,目标文件若已经存在,则直接覆盖
	# -i 若目标文件存在,操作前进行询问
	# -u 若目标文件较来源文件旧才进行替换

文件打开

	cat -AbEnTv 文件名
	# 由第一行开始展示内容
	# -A,可以列出特殊字符,而不是空白
	# -b,列出行号,空白行无行号
	# -E,标出结尾的断行字节
	# -n,列出行号,空白行也列出行号
	# -T,使用tab键时以 ^I 显示出来
	# -v,显示一些看不到的字符
	head -n 文件名
    # -n,其带参数,表示显示文件的前几行
	tac 文件名
	# tail cat
	# 由最后一行来进行文件显示
	
	# 以下了解即可,反正也记不住
	
	nl -bnw 文件名
	# 以显示行号的方式查看文件
	# -b,其带参数,a表示空行也带行号,t则相反
	# -n,其带参数,ln表示行号在最左侧显示,rn表示在右侧显示,不加0
	# rz表示在右侧显示,加0
	# -w,其带参数,指定行号栏位占用的位数
	more 文件名
    # 可以通过按键来进行查看
    空白键 (space):代表向下翻一页;
    Enter         :代表向下翻『一行』;
    /字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
    :f            :立刻显示出档名以及目前显示的行数;
    q             :代表立刻离开 more ,不再显示该文件内容。
    b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用
    less 文件名
    # 可以一页一页的翻动
    空白键    :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup]  :向上翻动一页;
    /字串     :向下搜寻『字串』的功能;
    ?字串     :向上搜寻『字串』的功能;
    n         :重复前一个搜寻 (与 / 或 ? 有关!)
    N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    q         :离开 less 这个程序

用户管理

添加用户

	useradd 选项 用户名
	# -c 指注释性描述(comment)
	# -d 指定用户主目录,如果不存在,可以增加-m来创建(directory)
	# -g 指定用户组
	# -G 指定用户所在的附加组
	# -s 指定用户的shell文件
	# -u 指定用户的用户号
	useradd –d  /home/sam -m sam # -d后面跟了参数,指定了用户目录的位置
	useradd -s /bin/sh -g group –G adm,root gem 
	# -s 带了参数,指定了shell文件所在的位置
	# -g 带了参数,指定组的名称
	# -G 带了参数,指定附加组的名称

删除用户

	userdel 选项 用户名
	# -r参数表示同时删除用户的主目录

修改用户

	usermod 选项 用户名
	# 具体参数与添加用户一致

密码管理

	passwd 选项 用户名
	# 注意权限,普通用户只能修改自己的密码,root用户可以修改所有的密码
	# -l 表示锁定口令,即禁用账号(lock)
	# -u 表示口令解锁(unlock)
	# -d 表示去除账号的口令
	# -f 强迫账户在下次登录时修改口令

添加用户组

	groupadd 选项 用户组
	# -g GID 指定新用户组的组标识号(GID)
	# -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
	groupadd -g 101 group2 # 新建用户组,标识号为101

删除用户组

	groupdel 用户组

修改用户组

	groupmod 选项 用户组
	# -g GID 为用户组指定新的组标识号
	# -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
	# -n 新用户组 将用户组的名字改为新名字
	groupmod –g 10000 -n group3 group2 # 将组group2的标识号改为10000,组名修改为group3

切换用户组

	newgrp root # 切换到root用户组

与用户相关的系统文件

	cat /etc/passwd
	# 保存着用户信息
	root:x:0:0:root:/root:/bin/bash
	daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
	bin:x:2:2:bin:/bin:/usr/sbin/nologin
	sys:x:3:3:sys:/dev:/usr/sbin/nologin
	# 对应着 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
	# 0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始,界限是500
	# 组标识号对应着/etc/group文件中的一条记录
	cat /etc/group
	# 保存着用户组信息
	root:x:0:
	daemon:x:1:
	bin:x:2:
	# 对应着 组名:口令:组标识号:组内用户列表

磁盘管理

查看磁盘信息

	df -ahikHTm 目录或文件名
	# -a 列出所有的文件系统,包括系统特有的 /proc 等文件系统(all)
	# -k 以 KBytes 的容量显示各文件系统
	# -m 以 MBytes 的容量显示各文件系统
	# -h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
	# -H 以 M=1000K 取代 M=1024K 的进位方式
	# -T 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
	# -i 不用硬盘容量,而以 inode 的数量来显示
	C:\             476G   98G  379G  21% /mnt/c
	D:\             466G   17G  449G   4% /mnt/d
	# 可以看出本地的两个磁盘都挂载再mnt这个文件夹

查看磁盘内的目录和文件的所有信息,而不是磁盘本身的信息

	du -ahskm 文件或目录名称
	# -a 列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已
	# -h 以人们较易读的容量格式 (G/M) 显示
	# -s 列出总量而已,而不列出每个各别的目录占用容量
	# -S 不包括子目录下的总计
	# -k 以 KBytes 列出容量显示
	# -m 以 MBytes 列出容量显示

查看磁盘分区

	fdisk -l 装置名称
	# -l 输出后面接的装置所有的分区内容
	# 若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来

磁盘格式化

	mkfs -t 文件系统格式 装置文件名
	# -t可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

磁盘检查

	fsck -t 文件系统 -ACay 装置名称

磁盘的挂载和卸载

	mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点
	# 磁盘挂载
	umount [-fn] 装置文件名或挂载点
	# 磁盘卸载
	# -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
	# -n :不升级 /etc/mtab 情况下卸除

Vim编辑器

	vim test.txt
	# 其会打开一个新的界面来展示这个文件
	# 如果不存在此文件则会自动创建
	# 而cat方式是在当前页面打开

包含了三种模式

  • 命令模式
    此为默认启动的模式,此时输入的字符会被认为是命令
    i 表示切换到输入模式,以输入字符
    x 表示删除当前光标所在处的字符
    : 表示切换到底线命令模式,以在最底一行输入命令(底线命令模式拥有更多的命令)
  • 输入模式
    有多种方式进入输入模式
    i 为从目前光标所在处输入, I 为在目前所在行的第一个非空格符处开始输入
    a 为从目前光标所在的下一个字符处开始输入, A 为从光标所在行的最后一个字符处开始输入
    o 为在目前光标所在的下一行处输入新的一行, O 为在目前光标所在的上一行处输入新的一行
    r 只会取代光标所在的那一个字符一次,R会一直取代光标所在的文字,直到按下 ESC 为止
    字符按键及shift 输入所有字符以及其大写
    ENTER 换行
    BACK SPACE 退格键,删除光标前一个字符
    DEL 删除键,删除光标后一个字符
    方向键 在文本中移动光标
    HOME/END 移动光标到行首/行尾
    Page Up/Page Down 上/下翻页
    Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
    ESC 退出输入模式,切换到命令模式
  • 底线命令模式
    q 退出程序
    w 保存文件

编辑文件的一般流程
vim打开,输入i进入输入模式,进行输入,完成输入按ESC退出,输入:进入底线命令模式,再输入wq退出

其他常用的快捷键

	# 用于命令模式
	[Ctrl] + [f] # 屏幕『向下』移动一页,相当于 [Page Down]按键
	[Ctrl] + [b] # 屏幕『向上』移动一页,相当于 [Page Up] 按键
	0 或功能键[Home] # 移动到这一行的最前面字符处
	$ 或功能键[End] # 移动到这一行的最后面字符处
	G # 移动到这个档案的最后一行
	/word # 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可
	?word # 向光标之上寻找一个字符串名称为 word 的字符串
	dd # 删除游标所在的那一整行
	ndd # 删除光标所在的向下 n 行,例如 20dd 则是删除 20 行
	yy # 复制游标所在的那一行
	nyy # 复制光标所在的向下 n 行,例如 20yy 则是复制 20 行
	p, P # p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行
	u # 复原前一个动作
	[Ctrl]+r # 重做上一个动作

apt命令

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令
(主要用于Debian 和 Ubuntu)
apt 命令执行需要超级管理员权限(root)

格式一般为 apt [options] [command] [package ...]

	sudo apt update # 列出所有更新
	sudo apt upgrade # 进行升级
	apt list --upgradeable # 列出可更新的软件包及版本信息
	sudo apt install <package_name> # 安装指定的软件
	sudo apt install <package_1> <package_2> <package_3> # 安装多个
	sudo apt update <package_name> # 更新指定的软件
	sudo apt show <package_name> # 显示指定软件的详细信息
	sudo apt remove <package_name> # 删除指定软件
	sudo apt autoremove # 清除不再使用的包或者文件
	sudo apt purge <package_name> # 移除软件包及配置文件
	sudo apt search <keyword> # 查找软件包命令
	apt list --installed # 列出所有已安装的包
	apt list --all-versions # 列出所有已安装的包的版本信息

网络状态

	netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip] 
	# 用于显示网络状态
	-a或--all 显示所有连线中的Socket。
    -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
    -c或--continuous 持续列出网络状态。
    -C或--cache 显示路由器配置的快取信息。
    -e或--extend 显示网络其他相关信息。
    -F或--fib 显示路由缓存。
    -g或--groups 显示多重广播功能群组组员名单。
    -h或--help 在线帮助。
    -i或--interfaces 显示网络界面信息表单。
    -l或--listening 显示监控中的服务器的Socket。
    -M或--masquerade 显示伪装的网络连线。
    -n或--numeric 直接使用IP地址,而不通过域名服务器。
    -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
    -o或--timers 显示计时器。
    -p或--programs 显示正在使用Socket的程序识别码和程序名称。
    -r或--route 显示Routing Table。
    -s或--statistics 显示网络工作信息统计表。
    -t或--tcp 显示TCP传输协议的连线状况。
    -u或--udp 显示UDP传输协议的连线状况。
    -v或--verbose 显示指令执行过程。
    -V或--version 显示版本信息。
    -w或--raw 显示RAW传输协议的连线状况。
    -x或--unix 此参数的效果和指定"-A unix"参数相同。
    --ip或--inet 此参数的效果和指定"-A inet"参数相同。
    
	ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
	# 监测与远程主机的连接
	-d 使用Socket的SO_DEBUG功能。
    -c<完成次数> 设置完成要求回应的次数。
    -f 极限检测。
    -i<间隔秒数> 指定收发信息的间隔时间。
    -I<网络界面> 使用指定的网络接口送出数据包。
    -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
    -n 只输出数值。
    -p<范本样式> 设置填满数据包的范本样式。
    -q 不显示指令执行过程,开头和结尾的相关信息除外。
    -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
    -R 记录路由过程。
    -s<数据包大小> 设置数据包的大小。
    -t<存活数值> 设置存活数值TTL的大小。
    -v 详细显示指令的执行过程。

posted @ 2020-11-25 21:49  lixin2020  阅读(142)  评论(0)    收藏  举报