Linux系统相关

文章目录

linux自主查找相关资源

授之以鱼不如授之以渔

ubuntu问答区
内核官方文档
文档2
Ubuntu各版本下载
linux 文本编辑器_Linux排名前7位的最佳文本编辑器

linux简介与安装

linux各发行版介绍

版本名 简介
Red Hat Enterprise Linux(RHEL) Red Hat公司的商业化发行版,稳定受支持。
Fedora Red Hat公司的免费版本,RHEL的试验场
Community Enterprise Operating System(CentOS)社区企业操作系统 源于RHEL依照开放源代码协议(大部分是GPL开源协议)规定释出的源码所编译而成
Debian 所有的组成部分都是自由软件,完全由网络上的Linux爱好者负责维护
Ubuntu 派生自Debian,自带图形界面

安装linux

装双系统的linux参考
注意内核大概率需要更新,而固件则不一定
更新固件参考

初入linux

终端的快捷键

Ctrl+Alt+T打开一个新终端,在终端中创建新标签:Ctrl+Shift+T
ssh-ptmx-pts-getty-tty-console
file

bash配置文件

Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写
https://www.jianshu.com/p/9d95e5e736da

解压zip出现中文乱码

unzip filename  //解压zip格式
tar -zxvf filename //解压tar.gz
-C xxx //解压到指定目录
在 windows 上压缩的文件,是以系统默认编码中文来压缩文件。而由于 zip 文件中没有声明其编码,所以 linux 上的 unzip 一般以默认编码解压,中文文件名会出现乱码。
因此我们需要指定解压编码(cp936)
unzip -O CP936 xxx.zip

-x:解压
-z:有gzip属性的
-v:显示所有过程
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

法二:用unar命令
首先可以用lsar命令查看zip压缩包文件 名字是否正常
lsar xxx.zip #列出所有文件
如果列出的文件名都能正常显示,那么可以直接用下面的命令解压,
unar xxx.zip #解压所有文件

如果上面用lsar列出的文件名不正确,那么可以用下面的命令。
代码:
lsar -e GB18030 xxx.zip #指定使用GB18030编码列出所有文件
unar -e GB18030 xxx.zip #指定使用GB18030解压所有文件
注:GB18030编码文件名的ZIP文件一般由简体中文版Windows产生,对于繁体中文版Windows产生的ZIP文件可以尝试BIG5-HKSCS编码,对其他语种的常见编码不再赘述。通用的原则是用lsar测试出正确的编码以后,用unar解压。

更改文件名编码

convmv
convmv就是更改文件名编码方式的一个工具。比如
sudo convmv -f gbk -t utf-8 -r –notest /home
就是将/home目录下原来文件名是gbk编码方式的全部改为utf-8格式的。这里 -f 后面为原来的编码方式,-t 后面是要更改为的编码方式, -r 表示递归形式处理这个目录下面的所有文件, –notest 表示马上执行,而不是仅仅测试而已。另外这命令很多情况要root才能执行,因此要加上 sudo。

更改文件内容编码

iconv
iconv是更改文件编码方式的一个工具:
sudo iconv -f gbk -t utf-8 -o outfile infile
-f为原来的编码方式,-t 为输出文件的编码方式, -o表示输出文件名,这利用outfile表示,最后跟上要更改编码方式的文件名infile 。

命令行查找文件

which  查看可执行文件的位置。
whereis 查看文件的位置。 
locate   配合数据库查看文件位置。
find   实际搜寻硬盘查询文件名称。

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

查看某个软件的位置

创建快捷方式

建立软连接方式

ln -s 源文件完整路径 目标文件完整路径 //-s表明是软连接,也就是windows下快捷方式一样的。

linux下硬件信息查看

lshw 命令查看 Linux 硬件信息用法
lshw 是一个查看硬件信息工具,主要在 Linux 下使用。lshw 可以检视整体硬件情况,也可以获取某项硬件设备的详细信息。支持检测包括 BIOS,主板配置,CPU,内存,硬盘,网卡,USB/SCSI 控制器等。
https://www.hostarr.com/list-hardware/

系统
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
cat /proc/cpuinfo | grep model\ name  #CPU
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

PCI 外设组件互连标准(Peripheral Component Interconnect)
grep 命令用于查找文件里符合条件的字符串。
-i 或 --ignore-case : 忽略字符大小写的差别。
lspci | grep 'VGA' #显卡型号
lspci | grep -i 'Audio' #声卡型号
lspci | grep -i 'Network' #网卡型号
df -lh #硬盘

资源
cat /proc/meminfo | grep MemTotal #内存
# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载

磁盘和分区
# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

网络
# ifconfig               # 查看所有网络接口的属性
[linux下ifconfig、iwconfig、iwlist命令详解](https://blog.csdn.net/openrd/article/details/53311063)
ifconfig中lo、eth0、br0、wlan0接口
lo 回环接口
 loopback
一般回环接口的ip v4地址为:127.0.0.1,子网掩码:255.255.255.0
虚拟网络接口:并非真实存在,并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。lo回环地址
为什么会有该接口?
如果包是由一个本地进程为另一个本地进程产生的, 它们将通过外出链的lo接口,然后返回进入链的lo接口
eth0 以太网接口
ethernet
互联网是范围概念;以太网是技术概念。
以太网接口与网卡对应,每个硬件网卡(一个MAC)对应一个以太网接口,其工作完全由网卡相应的驱动程序控制。
如果物理网卡只有一个,而却有eth1,eth2等,则可能存在无线网卡或多个虚拟网卡,虚拟网卡由系统创建或通过应用层程序创建,作用与物理网卡类似。
br0 网桥接口
bridge
网桥是一种在链路层实现中继,对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来的网络设备。
br0可以将两个接口进行连接,如将两个以太网接口eth0进行连接,对帧进行转发。
??无线网和热点同时打开是什么

wlan0 无线接口
wireless local area network
无线网卡对应的接口,无线网卡也需要对应的驱动程序才能工作。

 eth0 eth0:1 和eth0.1三者的关系对应于物理网卡、子网卡、虚拟VLAN网卡的关系:
物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接口。
子网卡:子网卡在这里并不是实际上的网络接口设备,但是可以作为网络接口在系统中出现,如eth0:1、eth1:2这种网络接口。它们必须要依赖于物理网卡,虽然可以与物理网卡的网络接口同时在系统中存在并使用不同的IP地址,而且也拥有它们自己的网络接口配置文件。但是当所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工作。
虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网络接口设备,也可以作为网络接口在系统中出现,但是与子网卡不同的是,他们没有自己的配置文件。他们只是通过将物理网加入不同的VLAN而生成的VLAN虚拟网卡。如果将一个物理网卡通过vconfig命令添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是eth0.1、eth1.2这种名字。

注意:当需要启用VLAN虚拟网卡工作的时候,关联的物理网卡网络接口上必须没有IP地址的配置信息,并且,这些主物理网卡的子网卡也必须不能被启用和必须不能有IP地址配置信息。这个在网上看到的结论根据我的实际测试结果来看是不准确的,物理网卡本身可以绑定IP,并且给本征vlan提供通信网关的功能,但必须是在802.1q下。
/sbin/ifconfig 查看、配置、启用或禁用网络接口(网卡)的工具 
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。比如我们可以用这个工具来配置网卡的IP地址、MAC地址、掩码、广播地址等。值得一说的是用ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig 指令来指定网卡的IP地址,比如在redhat或Fedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中; 
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
ifconfig配置网络接口语法: 
ifconfig 网络端口 IP地址 hw MAC地址 netmask 掩码地址 broadcast 广播地址 [up/down] 

ifconfig常用用法: 
    ifconfig : 查看主机激活状态的网络接口情况; 输出结果中:lo 是表示主机的回坏地址,eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址(MAC地址); inet addr 用来表示网卡的IP地址,Bcast表示广播地址,Mask表示掩码地址
    ifconfig -a : 查看主机所有(包括没有被激活的)网络接口的情况
    ifconfig eth0 : 查看特定网络接口的状态
    ifconfig eth0 down = ifup eth0 : 如果eth0是激活的,就把它终止掉。此命令等同于 ifdown eth0;
    ifconfig eth0 up = ifdown eth0 : 激活eth0 ; 此命令等同于 ifup eth0 
    ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 : 配置 eth0的IP地址、广播地址和网络掩码; 
    ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up : 配置IP地址、网络掩码、广播地址的同时,激活网卡eth0
    ifconfig eth1 hw ether 00:11:00:00:11:22 : 设置网卡的物理地址(MAC地址)。其中 hw 后面所接的是网络接口类型, ether表示以太网, 同时也支持 ax25 、ARCnet、netrom等,详情请查看 man ifconfig ;
虚拟IP技术在高可用领域像数据库SQLSERVER、web服务器等场景下使用很多,很疑惑它是怎么实现的,偶然,发现了一种方式可以实现虚拟ip。它的原理在于同一个物理网卡,是可以拥有多个ip地址的,至于虚拟网卡,也可用通过该方式拥有多个ip。  即对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。
其实现原理主要是靠TCP/IP的ARP协议。因为ip地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。这就是整个实现 的关键。
在eth0处引用别名,设置完子网掩码即可
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up

#iwconfig                #用于无线网卡的
nmcli dev show 可以查看MAC, IP, DNS等信息
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
netstat -rn 查看内核 IP 路由表

netstat -nap | grep port 将会显示使用该端口的应用程序的进程id
netstat -a  or netstat –all 将会显示包括TCP和UDP的所有连接 
netstat --tcp  or netstat –t 将会显示TCP连接
netstat --udp or netstat –u 将会显示UDP连接
netstat -g 将会显示该主机订阅的所有多播网络。 

# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

补充网络指令
htop,终端里的任务管理器,比top易用,支持过滤/搜索,实时监控进程的CPU/内存,想kill谁就kill谁,真的是"杀手级"应用.
nethogs用来查看系统中哪些进程在网络通信,以及速度如何:
sudo nethogs ppp0
iftop就更加"淫荡"了,能直观地看到哪个IP在跟哪个服务器通信
sudo iftop -i ppp0
在终端查看即时网速,我喜欢用ifstat
当然神器sysstat里的sar也可以查看网络设备的吞吐情况,比如每隔2秒,显示5次:
sar -n DEV 2 5 |grep eth0
这些东西,如果系统没有安装,Ubuntu你只需执行以下命令安装即可:
sudo apt-get -y install htop nethogs iftop ifstat sysstat

ethtool允许你查看和更改网卡的许多设置(不包括Wi-Fi网卡)。你可以管理许多高级设置,包括tx/rx、校验及网络唤醒功能。下面是一些你可能感兴趣的基本命令:

显示一个特定网卡的驱动信息,检查软件兼容性时尤其有用。ethtool -i
启动一个适配器的指定行为,比如让适配器的LED灯闪烁,以帮助你在多个适配器或接口中标识接口名称:ethtool -p
显示网络统计信息:ethtool -s
设置适配器的连接速度,单位是Mbps:ethtool speed <10|100|1000> 

网络故障排查
ping 环回地址127.0.0.1 测试TCP/IP是否安装,兼容
ping 本机地址 如果测试不成功,则表示本地配置或安装存在问题
ping 默认网关 测试到边缘路由器是否畅通
ping DNS服务器 测试dns是否在工作
nslookup www.cug.edu.cn 测试DNS是否解析正确
ping 域名 测试网站服务器是否启动

进程
# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

用户
# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务

服务
# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务

程序
# rpm -qa                # 查看所有安装的软件包

其实就一个命令就搞定了:dmidecode 这个可以看具体的硬件信息,这个命令需要使用sudo
最常用的选项就是用 -t 或者 --type 来限定关键字:
bios, system, baseboard, chassis, processor, memory, cache, connector, slot

linux目录结构

ls的输出颜色不止3种,有以下几种,白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题黄色:表示设备文件灰色:表示其他文件
目录结构详情
pwd //查看当前所在目录
查看用户目录 cd ~

目录概述

系统启动必须:

/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。

/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。

/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

/bin:存放着最常用的程序和指令,Binaries (二进制文件) 的缩写

/sbin:只有系统管理员能使用的程序和指令。

外部文件管理:

/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。

/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。

/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

临时文件:

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。

/tmp:这个目录是用来存放一些临时文件的。

账户:

/root:系统管理员的用户主目录。

/home:用户的主目录,以用户的账号命名的。

/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:系统用户使用的应用程序与指令。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

运行过程中要用:

/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。

/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:

/opt:默认是空的,我们安装额外软件可以放在这个里面。

/srv:存放服务启动后需要提取的数据(不用服务器就是空)

/usr/include

Linux下开发和编译应用程序需要的头文件,在这里查找;
/usr/lib
存放一些常用的动态链接共享库和静态档案库;
/usr/local
这是提供给所有用户的/usr目录,在这里安装软件最适合;
/usr/man
man在Linux中是帮助的同义词,这里就是帮助文档的存放目录,/usr/share/man指向这里;

/sys下的子目录

/sys/devices
该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。一般来说,所有的物理设备都按其在总线上的拓扑结构来显示,但有两个例外,即platform devices和system devices。platform devices一般是挂在芯片内部的高速或者低速总线上的各种控制器和外设,它们能被CPU直接寻址;system devices不是外设,而是芯片内部的核心结构,比如CPU,timer等,它们一般没有相关的驱动,但是会有一些体系结构相关的代码来配置它们。

(sys/devices是内核对系统中所有设备的分层次表达模型,也是/sys文件系统管理设备的最重要的目录结构)

sys/dev
该目录下维护一个按照字符设备和块设备的主次号码(major:minor)链接到真是设备(/sys/devices)的符号链接文件。

/sys/class
该目录下包含所有注册在kernel里面的设备类型,这是按照设备功能分类的设备模型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下都是这种哦哦那个设备类型的各种具体设备的符号链接,这些链接指向/sys/devices/name下的具体设备。设备类型和设备并没有一一对应的关系,一个物理设备可能具备多种设备类型;一个设备类型只表达具有一种功能的设备,比如:系统所有输入设备都会出现在/sys/class/input之下,而不论它们是以何种总线连接到系统的。(/sys/class也是构成linux统一设备模型的一部分)

/sys/block
该目录下的所有子目录代表着系统中当前被发现的所有块设备。按照功能来说防止在/sys/class下会更合适,但由于历史遗留因素而一直存在于/sys/block,但从linux2.6.22内核开始这部分就已经标记为过去时,只有打开了CONFIG_SYSFS_DEPRECATED配置编译才会有这个目录存在,并且其中的内容在从linux2.6.26版本开始已经正式移到了/sys/class/block,旧的接口/sys/block为了向后兼容而保留存在,但其中的内容已经变为了指向它们在/sys/devices/中真实设备的符号链接文件。

/sys/bus
该目录下的每个子目录都是kernel支持并且已经注册了的总线类型。这是内核设备按照总线类型分层放置的目录结构,/sys/devices中的所有设备都是连接于某种总线之下的,bus子目录下的每种具体总线之下可以找到每个具体设备的符号链接,

一般来说每个子目录(总线类型)下包含两个子目录,一个是devices,另一个是drivers;其中devices下是这个总线类型下的所有设备,这些设备都是符号链接,它们分别指向真正的设备(/sys/devices/name/下);而drivers下是所有注册在这个总线上的驱动,每个driver子目录下 是一些可以观察和修改的driver参数。

(它也是构成linux统一设备模型的一部分)

/sys/fs
按照设计,该目录使用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。

/sys/kernel
这个目录下存放的是内核中所有可调整的参数

/sys/firmware
该目录下包含对固件对象(firmware object)和属性进行操作和观察的接口,即这里是系统加载固件机制的对用户空间的接口.(关于固件有专用于固件加载的一套API)

/sys/hypervisor
该目录是与虚拟化Xen相关的装置。(Xen是一个开放源代码的虚拟机监视器)

/sys/module
该目录下有系统中所有的模块信息,不论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件),都可能出现在/sys/module中。即module目录下包含了所有的被载入kernel的模块。

/sys/power
该目录是系统中的电源选项,对正在使用的power子系统的描述。这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机/重启等等。

可以看到 sys 下的目录结构是经过精心设计的:在/sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备,也包括ACPI 等不那么显而易见的真实设备、还有tty, bonding 等纯粹虚拟的设备;在其它目录如 class, bus 等中则在分类的目录中含有大量对 devices 中真实对象引用的符号链接文件;

内核的分类:

 1. 微内核:尽可能的保证内核的精简,所有的设备都需要安装驱动程序(不知道这样说准确否) 例如windows,你所有的设备的驱动城区都是你后来装的。
 2. 单内核:设备直接融入到内核中去。
            linux属于单内核,但是由于它巧妙的设计(可以这样想,内核外表有很多“洞”用于连接模块),它可以将很多设备做成模块,当需要时自动加入内核,由于是在内核中工                  作,所以效率非常高。

从理论上来讲,微内核是更先进的设计,但是到目前为止,它的优势都没有发挥出来,linux由于单内核的设计,所以造成了驱动程序难安装,难研发。

Linux内核的分类

  1.kernel   内核本身    
     还记得initrd吗?它其实是生成的,从过/sbin/mkinitrd这个脚本,在你安装操作系统后,自动生成,用于辅助内核。
  2.kernel object  内核对象(内核模块)
    它们是以.ko结尾的文件,所有的,ko文件只能在内核加载。他们位于/lib/modules目录 大小50M左右,内核将文件系统和各种外围驱动都做成模块放在这里面,而且每一个           不同版本的内核都对应一个和内核版本名字相同的文件夹存放对应的内核模块文件###必须严格对应,否则会出错

linux文件信息

使用ls 显示当前目录下的所有文件名
使用ls -l 显示当前目录下的所有文件信息
示意图
file

linux查看日志

dmesg命令用于显示开机信息。
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
dmesg | less 显示开机记录
sudo dmesg | grep PM 查看开机电源信息
Linux 6种日志查看方法

gedit编辑器

gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它简单易用,有良好的语法高亮,对中文支持很好,支持包括GB2312、GBK在内的多种字符编码。gedit是一款自由软件。
在终端中输入 gedit 文件名
注意区分不是grep

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU’s Not Unix!的递归缩写(即递归首字缩写,是一种在全称中递归引用它自己的缩写,类似的还有wine Wine Is Not an Emulator),因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux。
GNU通用公共许可证简称为GPL,是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件。大多数的GNU程序和超过半数的自由软件使用它。Linux操作系统以及与它有关的大量软件是在GPL的推动下开发和发布的。如果你打算为了发布的目的修改,更新或改进任何受通用公共许可证约束的软件,你所修改的软件同样必须受到GNU通用许可证条款的约束。

Linux内核版本和发行版本

查看版本

内核的开发和规范一直是由Linus领导的开发小组控制着,版本也是惟一的。开发小组每隔一段时间公布新的版本或其修订版。最新内核版本
Linux内核的版本号命名规则,“主版本号.次版本号.修正号”。主版本号和次版本号标志着重要的功能变动,修正号表示较小的功能变更。其中次版本是偶数数字,表示该内核是稳定版;如果是奇数数字,则表示测试版。如2.5.74表示是一个测试版的内核,2.6.22表示是一个稳定版的内核。
一般Linux的版本发布都是Alpha->Beta->RC1(Release candidate发布候选版本)->…->RCn->GA(Gereral Availability,就是正式版的意思)
查看内核版本可使用。uname -a 或者uname -r或者cat /proc/version

查看发行版本可使用 cat /etc/issue

版本参数信息

内核版本的选择

推荐使用的内核版本列表,从优至劣排序如下:
选择使用自己喜欢的发行版所支持的内核
最新的稳定版本
最新的 LTS 版本
还在维护的老 LTS 版本

在适用性上,Kroah-Hartman 推荐:
笔记本电脑/台式机:最新的稳定版本
服务器:最新的稳定版本或最新的 LTS 版本
嵌入式设备:最新的 LTS 版本或更还在维护的老 LTS 版本

什么是硬件支持(HWE)?

  • 全新的硬件设备总是更频繁地向公众发布。我们希望这样的硬件能够在Ubuntu上始终运行,即使它是在Ubuntu版本之后发布的。在IT领域,六个月(制作新的Ubuntu版本需要花费时间)是很长的一段时间。硬件支持(HWE)就是这样:赶上最新的硬件技术。

  • 现在,Ubuntu如何实现硬件启用的目标?使用内核的滚动版本:新内核发布后,将其打包为Ubuntu进行测试(通过建议的口袋和特殊的Q / A方法),并可供Ubuntu用户使用。这种方法当然有一些缺点:过快地发布新内核可能会引入一些错误和问题,并且可能不适用于企业。

  • 解决方案?为不同的用户提供不同的内核。因此,Ubuntu将至少提供两个内核:通用可用性(GA)内核,即最稳定的内核,它不会更新到点发行版;以及硬件启用(HWE)内核,即最新发布的内核。这就是为什么您同时看到linux-generic和linux-hwe-generic包的原因。

    安装内核

    https://zhuanlan.zhihu.com/p/133323571

  • 方法 1 - 使用
    升级 Linux 内核(手动方式)
    这个方法可以帮助你从 kernel.ubuntu.com 网站手动下载可用的最新 Linux 内核。如果你打算安装最新版(而不是稳定版或者正式发布版),那这种方法对你会很有用。从以上链接下载 Linux 内核版本。编写这个指南的时候,最新的可用版本是 5.0-rc1,最新的稳定版是 v4.20。
    点击你所选择的 Linux 内核版本链接,找到你对应的架构(“Build for XXX”)的那部分。然后下载符合以下格式的两个文件(其中 X.Y.Z 是最高版本号):
    linux-image-X.Y.Z-generic-.deblinux-modules-X.Y.Z-generic-.deb
    在终端中改变到文件所在的目录,然后执行此命令手动安装内核:
    $ sudo dpkg –install
    .deb
    重启系统,使用新内核:
    $ sudo reboot
    检查是否如你所愿:
    $ uname -r
    以上的指南是针对的是 4.15 版本,不过安装最新版本的所有的步骤都是一样的。
    优势: 不必联网(你可以从任何系统中下载 Linux 内核来使用)
    缺点: 手动更新,需要重启系统。

  • apt-get 来升级 Linux 内核(推荐方法)
    这是在类 Ubuntu 系统中升级 Linux 内核的推荐方法。不同于上一个方法,这种方法会从 Ubuntu 官方仓库下载、安装内核版本,而不是从 http://kernel.ubuntu.com网站
    要升级包括内核的整个系统,只需要执行:
    $ sudo apt-get update
    $ sudo apt-get upgrade
    如果只希望升级内核,运行:
    $ sudo apt-get upgrade linux-image-generic
    优势: 简单。推荐方法。
    缺点: 需要联网,需要重启。

linux删除多余的内核(dpkg用法)

如果升级到了一个新的内核,并且还比较稳定,那么老的内核就可以清理了,放在电脑里也占位置。方法(命令行比较通用)如下:

1.查看系统内存在的内核版本列表:
执行dpkg –get-selections显示包含标记install或deinstall之一的包
dpkg是Debian软件包管理器的基础(Ubuntu派生自debian),它被伊恩·默多克创建于1993年。dpkg与RPM十分相似,同样被用于安装、卸载和供给和.deb软件包相关的信息。 dpkg本身是一个底层的工具。上层的工具,像是APT,被用于从远程获取软件包以及处理复杂的软件包关系。 “dpkg”是“Debian Package”的简写。
sudo dpkg --get-selections |grep linux
也可以用dpkg -l查看本地软件包状态
每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符. 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 和简单描述.

第一字符为期望值,它包括:
    u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
    i 用户请求安装软件包.
    r 用户请求卸载软件包.
    p 用户请求清除软件包.
    h 用户请求保持软件包版本锁定.
第二列,是软件包的当前状态.此列包括软件包的六种状态.
    n 软件包未安装.
    i 软件包安装并完成配置.
    c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
    u 软件包被解包,但还未配置.
    f 试图配置软件包,但是失败了.
    h 软件包安装,但是但是没有成功.
第三列标识错误状态,可以总结为四种状态. 第一种状态标识没有问题,为空. 其它三种符号则标识相应问题.
    h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
    r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).
    x 软包件被破坏,并且被强制保持.

还可用此命令 ls /boot/ boot 目录存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
查看软件包nano的详细信息:
dpkg -s nano
查询系统中属于nano的文件:
dpkg-query -L nano
在Debian或Ubuntu Linux找出文件所属的软件包
找出哪个软件包提供了/usr/bin/passwd文件:dpkg -S /usr/bin/passwd
查看哪个软件包包含vim命令:apt-file search vim

2.查看当前Ubuntu系统使用的内核版本
uname -a
3.删除多余内核:
linux-image-: 内核镜像
linux-image-extra-: 额外的内核模块
linux-headers-: 内核头文件
1、APT方式
(1)移除式卸载:apt-get remove softname1 softname2 …;(移除软件包,当包尾部有+时,意为安装)
(2)清除式卸载 :apt-get purge softname1 softname2…;(同时清除配置)
(3)清除式卸载:apt-get purge sofname1 softname2…;(同上,也清除配置文件)
2、Dpkg方式
(1)移除式卸载:dpkg -r pkg1 pkg2 …;
(2)清除式卸载:dpkg -P pkg1 pkg2…;
sudo apt-get purge linux-headers-3.0.0-12 linux-image-3.0.0-12-generic
4.更新grub:
GNU GRUB是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。 GNU GRUB的前身为Grand Unified Bootloader。
sudo update-grub

linux安装软件

rpm包和deb包区别

rpm包主要应用在RedHat系列,如Fedora等发行版的Linux系统上
deb包主要应用于Debian系列,如Ubuntu等发行版上
https://blog.csdn.net/liuxiaodong400/article/details/81038419

Ubuntu下apt-get和dpkg命令详解

https://snailvfx.github.io/2016/04/08/apt-get/
apt与apt-get的区别
apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。

注意,apt与dpkg管理的软件列表是相同的。nap 和 Flatpak 这两种应用不会显示在dpkg/apt中,需要单独查看,如snap list,flatpak list。

apt查找已安装的软件
apt list –installed | grep snap
dpkg查找已安装的软件
dpkg -l |grep snap

更多区别

snap

snap包管理

Ubuntu 20.04上优雅的使用微信和QQ(基于deepin wine)

【相关知识】
deepin wine与wine不同
wine(Wine Is Not an Emulator的缩写)是一个能够在多种 POSIX-compliant操作系统上运行Windows应用的兼容层软件。Wine 并不是像虚拟机或者模拟器一样模仿Windows的内部逻辑,而是將Windows API 重写成为动态的POSIX调用,解决了性能和其他一些行为的内存占用问题,让我们直接能集合Windows应用到linux的桌面。
不过很多软件都不能直接通过wine运行,因为他们会随着软件的更新不兼容导致运行失败,这也会在后续中得到解决。那什么是deepin wine呢?它是Deepin 团队继续wine而定制的一个wine版本,可以很大程度的减少普通用户的门槛(耗时的过程)。
而我们要使用的则是deepinwine在ubuntu系统上的移植版本,项目地址https://github.com/zq1997/deepin-wine
1 安装deepin wine,无需再单独装wine
wget -O- https://deepin-wine.i-m.dev/setup.sh | sh
2 安装软件
sudo apt-get install 包名
file
https://deepin-wine.i-m.dev/
3.调整dpi
先退出deepin-tim或deepin-qq,否则会提示错误。
运行env WINEPREFIX="$HOME/.deepinwine/Deepin-TIM" winecfg(如果是修改QQ界面字体大小,就把Deepin-TIM改成Deepin-QQ)

安装微信输入框乱码问题解决方法

复制windows某个字体到 $HOME/.deepinwine/Deepin-WeChat/drive_c/windows/Fonts下,并安装

然后将屏幕分辨率拖放到合适的大小
实现win 10的150% DPI只需要将96改到144即可,125%放大则对应120
更多信息见https://github.com/zq1997/deepin-wine
https://www.cnblogs.com/xlpc/p/12335806.html

androidstudio安装

https://www.cnblogs.com/jianhaoscnu/p/12915862.html
1.下载地址https://developer.android.com/studio?hl=zh-cn
2.解压即可用
解压位置选择
将您下载的 .zip 文件解压缩到您应用的相应位置,例如 /usr/local/ 中(用于用户个人资料)或者 /opt/ 中(用于共享用户)
3.后续打开方式
转到 android-studio/bin/ 目录(解压后的目录),并执行 studio.sh。
cd /opt/android_studio/android-studio/bin
./studio.sh

androidstudio的代理问题

法一https://www.androiddevtools.cn/
法二加速器

linux中的v2ray安装与使用

主要参考此篇文章
https://mahongfei.com/1776.html
./Qv2ray-refs.tags.v1.99.6-linux.AppImage
后续进入
解压zip文件到当前目录
unzip 压缩包名
官方文档 通过订阅地址导入
https://qv2ray.net/getting-started/step3.html#%E9%80%9A%E8%BF%87%E8%AE%A2%E9%98%85%E5%9C%B0%E5%9D%80%E5%AF%BC%E5%85%A5

安装有道词典

1.从官网下载deb包http://cidian.youdao.com/multi.html
2.使用 sudo apt-get install -f 修复一下依赖
3.安装 sudo dpkg -i 包名.deb

WPS for linux启动特别慢解决方法

ubuntu20.04上安装
sudo apt-get install libcanberra-gtk-module
sudo apt-get install appmenu-gtk2-module

其他安装

linux 安装 redis
https://www.cnblogs.com/mengfangui/p/12243534.html
Linux安装RabbitMQ和基本配置
https://blog.csdn.net/u013645689/article/details/109713878
Linux 安装Nodejs
https://www.cnblogs.com/wangwangfei/p/13463776.html

Linux下屏幕亮度的调节

注意先确定内核已经更新,再尝试此教程
https://blog.csdn.net/qq_27525611/article/details/109350377

Linux上安装JDK1.8,并设置为默认JDK

法一:基础教程
进阶教程
法二:
sudo apt list|grep jdk
sudo apt install -y java-1.8.0-openjdk.x86_64
安装目录为usr/lib/jvm,会自动配置环境变量,并且设置为默认jdk

安装openjdk
1、更新软件包列表:
sudo apt-get update
2、安装openjdk-8-jdk:
sudo apt-get install openjdk-8-jdk
sudo apt install openjdk-8-jdk-headless# 注意还有一个是sudo apt install openjdk-8-jre-headless,表示是jre,headless表示运行无gui的java程序

3、查看java版本,看看是否安装成功:
java -version

如果你安装了多个版本的jdk,你可以通过以下命令在这些版本之间切换:
sudo update-alternatives –config java

固件与驱动

驱动和固件(firmware)都是代码,前者为软件(操作系统)服务,后者为硬件服务
固件(Firmware) 就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。
固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。
固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
固件是为控制硬件设备而设计的。在计算机中,我们称之为BIOS(基本输入/输出系统)或UEFI(统一可扩展固件接口)。BIOS是计算机上电后第一个启动的。它可以与硬件交互,并检查它是否有任何错误。BIOS调用另一个名为boot loader的程序,它负责唤醒沉睡在硬盘驱动器内的操作系统,并将其放入随机存取存储器中。

驱动(Drive):驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。也称为设备驱动程序或软件驱动程序,是实现高级计算机程序与硬件设备交互的软件。驱动程序是硬件厂商根据操作系统编写的配置文件,设备驱动程序是与操作系统和硬件相关的。驱动程序告诉操作系统如何与设备通信,当计算机程序请求与某个硬件设备交互时,驱动程序将处理该设备和调用该驱动程序的计算机程序之间的指令和输出转换。设备驱动程序充当硬件设备与使用它的程序或操作系统之间的转换器。

每个驱动程序都是为特定或一组设备工作的。在您的计算机上,驱动程序使用各种总线接口来与设备联系。例如,PCI Express。它用于连接硬件组件,如GPU、无线适配器和音频卡。而且,并非每个驱动程序都被设计为与用户交互。许多人在匿名的情况下继续他们的工作,用户完全不知道他们。

不同的操作系统,操作硬件的方式完全不同,在Windows里应用态是无法直接写IO端口的,而在嵌入式系统里,一般都不限制直接操作IO端口。所以,硬件厂商一方面为了自己的硬件能被软件更简单的使用,就需要写firmware,而另一方面为了兼容各种操作系统,又不能把firmware写的太死,必须预留足够的余地让软件自由发挥——软件的自由发挥就是驱动

不同操作系统的驱动是不能兼容的,原因就是驱动是为操作系统服务的,有的操作系统是单线程的,有些操作系统不允许动态申请内存,所以不同的操作系统要操作硬件,就要根据自身的特性编写对应的操作代码,这就是驱动存在的意义——适应系统需要。

假如世界上只有一种操作系统,并且版本永远不会改变,那么firmware和驱动就可以融合在一起,但这只能一个不现实的梦想,要知道民用操作系统和工业控制操作系统差别是十分巨大的。

驱动下载地址

Intel® Wireless Adapters
Intel全驱动固件下载

双系统ubuntu wifi图标消失,无法连接无线网络

  • 有无线网卡驱动,网络服务关闭所致,重启服务
    sudo service network-manager stop
    sudo rm /var/lib/NetworkManager/NetworkManager.state
    sudo service network-manager start
    sudo gedit /etc/NetworkManager/NetworkManager.conf //可见managed=false,把false 改成 true
    sudo service network-manager restart//重启网络服务

  • 可能是没有无线网卡驱动
    安装最新版的Ubuntu后,无法连接WiFi,解决方法如下:
    1.通过有线的方式让电脑连上网,可以插网线或用手机网络,我一般都用手机,将手机与电脑通过数据线连接起来后,在手机上打开USB网络共享功能,“设置”——“个人热点”——“USB网络共享”;
    2.终端执行:sudo apt update //获取更新列表
    sudo apt upgrade //安装可用更新,可能有内核更新
    apt search xxx//查询软件包
    3.如果没有驱动(双系统另一个wifi正常)
    终端执行:sudo apt-get install bcmwl-kernel-source//不一定是这个网卡驱动。
    可以lspci查看网卡型号,然后去厂商官网下载驱动
    安装Intel网卡驱动参考

可能方法:接着把下载好的驱动复制到lib的firmware中
$sudo cp -i iwlwifi-3168-22.ucode /lib/firmware
$sudo reboot
4.执行成功后,还显示有线连接,然后需要把有线连接关闭,无线连接才能成功。等一会儿后就会出现正常的WIFI信号标志。

系统休眠问题

为什么我们需要S3睡眠模式?
Windows在最近几年大力推行Modern Standby睡眠模式,其存在一定程度上的Bug,不如S3睡眠模式稳定。而且Linux系统并不支持Mondern Standby睡眠,所以在Linux系统下如果笔记本只支持Mondern Standby模式,则会出现无法睡眠,或者睡眠无法唤醒等情况。而近年来越来越的的笔记本电脑默认只支持Mondern Standby模式,这给用户(特别是Linux用户)带来了很大的困扰

休眠相关基础知识介绍

  1. echo是一个DOS、OS/2、Microsoft Windows、Singularity、Unix和类Unix系统中的命令,用来将字符串输出到终端上。它通常在shell脚本和批处理中使用,以将状态信息输出到屏幕或文件中。
    当echo与>连用时,可以将指定内容写入到文件中,注意不是追加模式
    cat 将指定文件内容输出到命令行中
    使用例子
    $ echo This is a test.
    This is a test.
    $ echo "This is a test." > ./test.txt
    $ cat ./test.txt
    This is a test.
  2. 高级配置与电源接口(英文:Advanced Configuration and Power Interface,缩写:ACPI)ACPI定义了系统固件(BIOS或UEFI)和操作系统之间的硬件抽象接口。ACPI是一种标准
    BIOS与UEFI区别可看点击查看,实际传统bios已经基本消失,现在看到的bios实质上是uefi bios
    具体如下
    S0 正常。?
    S1 CPU停止工作。唤醒时间:0秒。
    S2 CPU关闭。唤醒时间:0.1秒。
    S3 除了内存外的部件都停止工作。唤醒时间:0.5秒。
    S4 内存信息写入硬盘,所有部件停止工作。唤醒时间:30秒。(休眠状态)
    S5 关闭。

查看/设置本机休眠模式

  • linux

    cat /sys/power/state // 查看内核支持哪几种休眠方式
    cat /proc/acpi/wakeup//查看BIOS电源管理支持的睡眠模式
    cat /sys/power/mem_sleep//配置mem实际效果(S3开启后新增的[deep]选项,这里[]表示选定了这个选项,如果BIOS没有开启S3,则只能S2休眠)

    在/sys/power目录下还有一个文件:disk,文件的内容可以如下:
    shutdown: 将系统状态保存到磁盘,让BIOS关闭计算机;
    platform: 将系统状态保存到磁盘,让BIOS关闭计算机,并且点亮挂起指示灯;
    firmware:
    让BIOS自己将系统状态保存,并且关闭计算机,需要BIOS自己有挂起磁盘。大部分工作都由BIOS完成,对操作系统是透明的;

  • win10
    powercfg -a

使能S3模式

注意由于新的win10版本使用了所谓modern standby模式,很多新的电脑需要在bios里设置启动模式, 目前thinkpad,联想小新的bios是支持切换的,但很多其他型号笔记本并不支持,这一点在购买电脑时(安装linux)需要注意。

通过swapfile来使能S4模式

Here is what I did to make it work with Ubuntu 18.04.

    Make your /swapfile have at least the size of your RAM

sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=$(cat /proc/meminfo | awk '/MemTotal/ {print $2}') count=1024 conv=notrunc
sudo mkswap /swapfile
sudo swapon /swapfile

    Note the UUID of the partition containing your /swapfile:

$ sudo findmnt -no UUID -T /swapfile
20562a02-cfa6-42e0-bb9f-5e936ea763d0

    Reconfigure the package uswsusp in order to correctly use the swapfile:

sudo dpkg-reconfigure -pmedium uswsusp
# Answer "Yes" to continue without swap space
# Select "/dev/disk/by-uuid/20562a02-cfa6-42e0-bb9f-5e936ea763d0" replace the UUID with the result from the previous findmnt command
# Encrypt: "No"

    Edit the SystemD hibernate service using sudo systemctl edit systemd-hibernate.service and fill it with the following content:

[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep

    Note the resume offset of your /swapfile:

$ sudo swap-offset /swapfile
resume offset = 34818

    Configure Grub to resume from the swapfile by editing /etc/default/grub and modify the following line:

GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash"

    Update Grub:

sudo update-grub

    Create the following /etc/initramfs-tools/conf.d/resume:

RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816
    # Resume from /swapfile

    Update initramfs:

sudo update-initramfs -u -k all

Now you can hibernate with sudo systemctl hibernate.

参考文献
开启S3,S4模式
How To Add Swap Space on Ubuntu 20.04
使用交换文件使能S4

linux内核睡眠状态解析(基本是从linux kernel官方网站翻译过来的)
linux系统的休眠与唤醒简介

启用休眠

进入这三种节电模式的方法如下
echo standby > /sys/power/state —->挂起(S1)
echo mem > /sys/power/state —->挂起到内存(S3)

echo shutdown > /sys/power/disk;
echo disk >/sys/power/state —->挂起到磁盘(S4)
echo platform > /sys/power/disk;
echo disk >/sys/power/state —->挂起到磁盘(S4)
或者
pm-suspend 挂起
systemctl suspend 挂起,现在推荐,ubuntu桌面版的挂起按钮
pm-hibernate 休眠S4
systemctl hibernate 休眠S4,现在推荐

pm-suspend vs systemctl suspend?

https://terrywang.net/2014/08/13/systemctl-suspend-vs-pm-suspend.html
https://unix.stackexchange.com/questions/484550/pm-suspend-vs-systemctl-suspend
https://askubuntu.com/questions/838113/sleep-mode-differences-between-systemctl-and-pm-suspend
echo命令解析,加上>则是重定义方向????
联想电脑查看配置S3休眠模式
注意可能会遇到无法关机的问题,此时需要关闭联想自带的开盖开机功能。
如果开启了S4,可能还会遇到此问题,暂时无解决方法,可以在点了关机按钮后,立刻把盖子盖上,这样就可以关机了。

DellWin10无法S3休眠原因

配置好后启用休眠

GUID分区 与linux交换分区问题

https://zhuanlan.zhihu.com/p/114518326

.pem后缀的密钥

创建无线热点

键盘失灵,无法输入,输入缓慢

可能1:当卡死了之后,按fn+ 功能键,是有用的。
是我用的输入法,当它没反应过来的时候,就卡死。
可以通过更换输入法解决
https://zhuanlan.zhihu.com/p/142206571

Linux下fcitx输入法候选框在IDEA等JetBrains系列IDE中不跟随光标

https://zhuanlan.zhihu.com/p/264870016
https://zhuanlan.zhihu.com/p/269573929

可能2:shift+alt

误删数据恢复方案

rm 参数
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
https://www.cnblogs.com/justmine/p/10359186.html
如果不小心误删了文件,不要着急,首先使用 lsof 查看打开该文件的进程,然后再使用 cat /proc/进程号/fd/文件描述符 查看恢复数据,最后使用I/O重定向的方式来恢复文件。

linux多用户多终端

原理

用户登录linux的本质是开启一个shell进程,例如bash进程(是最常见的一种shell)。
每个bash进程的ID随机分配。
因此多个终端使用一个用户。

且可以多用户同时登录,只是默认使用的用户目录不同
ps -aux | grep ‘bash’ //查看bash进程
ps(Process Status)
-A 列出所有的进程
-a 列出当前终端所有进程?
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程?
tty与pts区别概述

查看当前登录用户

w命令
详解

与其他登录用户交流

write命令
write user [ttyname]
参数说明:
user : 预备传讯息的使用者帐号
ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty (w命令查看)传讯息
例:write ubuntu pts/0
输入内容后,结束请按 ctrl+c
wall命令
wall 内容
相当于向所有用户write
区别:wall无法知道接收用户是否屏蔽了我们发送的消息
mesg n/y username屏蔽解除屏蔽某用户发来的消息
write则有提示
两者均是传递消息,而不是交互式的
交互式可使用talk/ytalk
可与其他系统的用户通信,使用 -h 主机ip 参数

linux修改文件权限

https://blog.csdn.net/bmbm546/article/details/6875972
https://blog.csdn.net/starshinning975/article/details/71036921

linux截图工具flameshot

安装

sudo apt install flameshot

配置快捷键

右上角进入系统设置中的“键盘快捷键”页面中会列出所有现有的键盘快捷键,拉到底部就会看见一个 “+” 按钮点击 “+” 按钮添加自定义快捷键并输入以下两个字段:
名称: 任意名称均可,如 截图
命令: /usr/bin/flameshot gui
最后将这个快捷操作绑定到 PrtSc 键(也可以是其他任意键)上,可能会提示与系统的截图功能相冲突,但可以忽略掉这个警告。

linux下查看mysql的安装路径
https://blog.csdn.net/qq_32706349/article/details/86071455
Fedora安装mysql
https://blog.csdn.net/BIggyGuan/article/details/108380268
Fedora下Mysql的简单使用
https://blog.csdn.net/ranruoyu1003/article/details/6900787