Linux常见操作

Posted 小火柴的蓝色理想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常见操作相关的知识,希望对你有一定的参考价值。

前面的话

  本文将详细介绍Linux常见操作

 

基本概念

  Linux严格区分大小写,所有内容以文件形式保存,包括硬件

  Linux没有扩展名的概念,不靠扩展名来区分文件类型。但有一些约定俗成的扩展名

压缩包: .gz .bz2 .tar.bz2 .tgz
二进制软件包:.rpm
网页文件: .html .php
脚本文件: .sh
配置文件: .conf

  [注意]windows下的程序不能直接在linux中安装和运行

  Linux字符界面的优势如下:

  1、占用的系统资源更少

  2、减少了出错、被攻击的可能性

【分区类型】

  主分区:最多只能有4个

  扩展分区:最多只能有1个,主分区加扩展分区最多有4个,不能写入数据,只能包含逻辑分区

【硬件设置文件名】

硬件  设置文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱  /dev/cdrom 或/dev/hdc
软盘  /dev/fd[0-1]
打印机(25针)  /dev/1p[0-2]
打印机(USB)  /dev/usb/1p[0-15]
鼠标  /dev/mouse

【挂载】

必须分区
/ (根分区)
swap分区 (交换分区,内存2倍,不超过2GB)

推荐分区
/boot (启动分区,200MB)

 

显示

【起始标识】

[root@bogon ~]#

  root表示当前登录用户为管理员

  bogon表示主机名

  ~表示当前所在目录

  #是管理员的提示符

  $是普通用户的提示符

 【命令格式】

  当有多个选项时,可以写在一起

  选项包括简化选项与完整选择如-a 等于 --all

命令 [选项] [参数]

  [注意]个别命令使用不遵循此格式

 

文件

【文件类型】

  Linux包括以下7种文件类型,以文件位第一位来表示文件类型

- 文件
d 目录
l 软链接文件

  除了上面这3种,还有块设备文件、字符设备文件、套接字文件和管道文件。这4种文件都是linux系统中的特殊文件

【文件身份】

  文件位共有10位组成,除了第1位表示文件类型外,后9位每3位为一组,表示文件的所有者、所属组和其他人

【文件权限】

r读
w写
x执行

  下面这个例子中,表示这是一个文件,所有者有读写权限,而所属组和其他人只有读权限

  一般地,用户在自己主目录下拥有写权限,主目录之外只有读权限。如果一定在要不具有写权限的目录下操作文件,如新建文件。则可以使用sudo命令,变身管理员,然后输入管理员的密码来执行这个操作

 sudo touch aaa

【文件信息】

  上面的例子中,两个root之后,分别代码文件大小、文件最后一次修改时间及文件名称

  [注意]linux中文件名以.开头的文件是隐藏文件

【修改文件权限】

  比如,将a.txt文件的权限变更为读写权限

chmod 666 a.txt

  实际中使用 chmod 命令最多的一种情形可能是给自己写的脚本加一个执行权限

chmod +x a.sh

【常用一级目录作用】 

/ 根目录
/bin 存放系统命令
/sbin 存放只有管理员才能执行的系统命令 
/usr 系统资源保存目录,包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档
/usr/bin 存放系统命令 
/usr/sbin 存放只有管理员才能执行的系统命令
/boot 存放内核以及启动所需的文件等 
/dev 存放设备文件 
/etc 存放系统的配置文件 
/lib 存放函数库
/home 用户文件的主目录,用户数据存放在此目录中
/root 管理员的主目录
/mnt 空目录,存放临时的映射文件系统,常把软驱和光驱挂装在这里的floppy和cdrom子目录下
/media 空目录,存放临时的映射文件系统,老式linux无该目录
/misc 空目录,存放临时的映射文件系统,老式linux无该目录
/proc 不能直接操作,存放存储进程和系统信息
/sys 不能直接操作,存放存储进程和系统信息
/tmp 存放临时文件的目录
/var 包含系统产生的经常变化的文件

 

关机

关机

【shutdown】

shutdown [选项] 时间
选项:
    -c: 取消前一个关机命令
    -h: 关机
    -r: 重启
shutdown -h now 立刻关机

【其他关机命令】

halt
poweroff
init 0

【其他重启命令】

reboot
init 6

【运行级别】

  系统运行级别包括以下7个

0 关机
1 单用户,安全模式
2 不完全多用户,不含nfs服务
3 完全多用户
4 未分配
5 图形界面
6 重启
cat /etc/inittab
#修改系统默认运行级别
id:3:initdefault:

runlevel
#查询系统运行级别

 

登录

【查看登录用户信息】

【退出登录】

logout

【who】

【查询当前登录和过去登录的用户信息】

【查看所有用户的最后一次登录时间】

shell

  shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序

  shell还是一个功能非常强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用linux系统命令

 

【语法类型】

Bourne Shell:    主文件名为  sh
语法类型:sh、ksh、Bash、psh、zsh
C Shell  :  主要在BSD版的Unix系统中使用
语法类型:  csh、 tcsh

【查看当前系统的SHELL类型】

【编辑脚本】

vi hellp.sh

【退出脚本】

  在vim中编辑好之后,按esc键,回到一般模式,再输入“:wq”,回车执行

【脚本执行】

  1、赋予执行权限,直接运行

chmod 755 hello.sh
./hello.sh

  2、或者,可以通过bash调用执行脚本

bash hello.sh

 

输入输出

【输出重定向】

【输入重定向】

wc [选项] [文件名]
    选项:
        -c  统计字节数
        -w  统计单词数
        -l  统计行数

  命令<文件把文件作为命令的输入

  命令<<标识符把标识符之间的内容作为命令的输入

 

进程管理

  Linux 系统上有一个命令ps用来报告系统当前的进程状态

$ ps aux

  上面指令可以查看系统当前所有进程

$ kill 1234

  上面指令可以强制关闭进程号为1234的进程

$ bg

  上面指令让程序变成后台执行

$ fg

  上面指令让程序回到前台

 

磁盘管理

【df】查看磁盘分区使用状况

-I 仅显示本地磁盘(默认)
-a 显示所有文件系统的磁盘使用情况
-h 以1024进制计算最合适的单位显示磁盘容量
-H 以1000进制计算最合适的单位显示磁盘容量(新购买的U盘实际容量小于标识容量,是因为工业生产使用1000进制,而不是1024进制)
-T 显示磁盘分区类型
-t 显示指定类型文件系统的磁盘分区
-x 不显示指定类型文件系统的磁盘分区

【du】统计磁盘上的文件大小

-b 以Byte为单位统计文件
-k 以KB为单位统计文件
-m 以MB为单位统计文件
-h 按照1024进制以最适合的单位统计文件
-H 按照1000进制以最适合的单位统计文件
-s 指定统计目标

【MBR分区】

fdisk -l 查看当前磁盘分区
fdisk /dev/sdb 进入分区模式

   通过下面的命令为磁盘分得一个3GB的主分区

  分配结束后,输入p命令来查看分区信息

  最后输入w来保存并结束当前分区结果

 【GPT分区】

  MBR分区的限制在于主分区不超过4个,单个分区容量最大为2TB。而GPT分区最多支持128个分区,单个分区容量最大为18EB

1EB = 1024PB
1PB = 1024TB
1TB = 1024GB

  GPT分区中,不适合安装X86架构的系统,即32位操作系统

  fdisk命令只适合于MBR分区,而parted命令同时适合于MBR分区和GPT分区

  [注意]下面分区从1M开始是为了保持4K对齐

【分区格式化】

  先使用ll /dev/sdb*来查看sdb的分区情况

  使用mkfs命令来进行分区格式化

  [注意]扩展分区不能进行分区格式化

mkfs .ext4 /dev/sdb1

【挂载】

  格式化后的分区必须进行挂载操作,才能使用。一般地,挂载在mnt目录下

  下面代码中,将sdb1挂载到mnt目录下的sdb1目录中

mkdir -p /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1

  通过mount命令挂载的分区不具有永久性,关机后失效。更好的方式是需要编辑etc目录下的fstab文件

vim +  /etc/fstab

  这样一来,即使系统重启,也会进行自动挂载

【swap交换分区】

  在linux中添加swap交换分区的步骤如下

  1、先建立一个linux普通分区 (用MBR建立)输入fdisk /dev/sdb

  2、修改分区类型的16进制:输入t,再输入该硬盘的分区号如6,再输入16进制的编码L。修改编码83,改为82(swap类型)输入w保存退出

  3、格式交换分区 mkswap /dev/sdb6

  4、启动分区 swapon /dev/sdb6

  5、关闭分区 swapoff /dev/sdb6

 

用户管理

  linux允许多个用户在同一个时间登录同一个操作系统

【group】

/etc/group 存储当前系统中所有的用户组信息
  Group:      x    : 123  :abc,def,xyz
  组名称:组密码占位符:组编号:组中用户名列表

  当用户组名称与用户名相同时,可以省略用户名列表的信息

  组编号0为root,1-499为系统保留组编号,一般用于安装在系统中的软件或服务;用户手动创建的用户组从500开始

【gshadow】

/etc/gshadow 存储当前系统中用户组的密码信息
Group:   *  :       : abc,def,xyz
组名称:组密码:组管理者:组中用户名列表

  该文件中的内容与group里面的内容一一对应

【passwd】

/etc/passwd 存储当前系统中所有用户的信息
 user:     x    :  123  :    456  :  xxxxxxx :/home/user:/bin/bash
用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:shell类型
/etc/shadow存储当前系统中所有用户的密码信息
 user :vf;/Zu8sdf...:::::
用户名:     密码    :::::

  由于系统运行过程中,group和passwd这两个文件经常需要被读取,而密码又属于敏感数据,于是单独设置了gshadow和shadow来保存密码

【基本命令】

groupadd  用户组名 #创建用户组
groupmod -n 新组名 原组名 #修改用户组名    
groupmod -g 组编号 组名称 #修改组编号
groupadd -g 组编号 组名称 #创建用户组并指定组编号
groupdel 组名称 #删除用户组

useradd -g 用户组 用户 #向指定用户组中添加用户
useradd -d 文件夹 用户 #创建用户并指定用户的个人文件夹
usermod -c 备注信息 用户 #给用户添加备注信息
usermod -l 新用户 原用户 #修改用户名
usermod -g 目标用户组名 用户 #切换用户组
userdel 用户名 #删除用户 userdel
-r 用户名 #删除用户及对应的个人文件夹 touch /etc/nologin #禁止除root外的用户登录服务器
passwd abc #给用户adc设置密码

  [注意]在centos系统下,使用useradd会默认在home目录下,新增一个与用户名同名的目录。如果是ubuntu系统,默认不创建目录,如果需要则添加-m参数

【进阶命令】

passwd -l 用户名 #锁定用户 禁用
passwd -u 用户名 #解锁用户
passwd -d 用户名 #清除用户密码,可以无密码登录

  用户可以同时属于多个组,一个是主要组,其他的为附属组

gpasswd -a 用户名 附属组,附属组,..... #添加附属组

  用户创建的文件默认为主要组;需要以附属组创建文件的,需将身份切换到附属组

newgrp 附属组名称 #切换附属组

  [注意]需要用户登录后,自己执行,切换,组密码是在组切换时用的,如果有,会要求输入组密码

gpasswd -d 用户名 附属组 #删除附属组
useradd -g group1 -G group2,group3,.... #创建用户同时指定主要组和附属组
gpasswd 用户组 #设定组密码

  [注意]输入后回车,会有提示让输入密码

su username #切换当前用户身份,su后不加参数切换到root
sudo su #切换到root用户 whoami #显示当前登录用户名 id 用户名 #显示制定用户信息,包括用户编号,用户名,主要组编号及名称,附属组列表 groups 用户名 #显示用户所在的所有组 chfn 用户名 #设置用户资料 finger 用户名 #显示用户详细资料

 

端口设置

  查看某个端口被占用情况

lsof -i:8081

  然后使用kill -9命令来结束进程

kill -9 18446

 

以上是关于Linux常见操作的主要内容,如果未能解决你的问题,请参考以下文章

Alfred常见使用

视图或片段库为常见数据类型组成 UI

VSCode自定义代码片段——git命令操作一个完整流程

[linux][c/c++]代码片段01

Android 实用代码片段

Android 实用代码片段