linux命令大全
linux内核
远程工具:winscp、MobaXterm、vnc

0、 linux的版本

优麒麟 20.04 LTS Pro
银河麒麟桌面操作系统V10和银河麒麟高级服务器操作系统V10,分别推出了飞腾、鲲鹏、龙芯、申威、海光、兆芯六个版本(linux5.10.5)
银河麒麟操作系统社区版4.0.2-SP2是基于优麒麟 16.04 长期支持版本进行定制,集成了 UKUI 桌面环境和第三方应用。

  • buster:debian10的代号。
  • bionic:Ubuntu 18.04的代号。
  • focal : Ubuntu20.04的代号。
  • Hirsute:Ubuntu 21.04
Ubuntu版本一览表
版本号
代号
发布时间
22.04
Jammy Jellyfish
2022-04-22
21.10
Impish Indri
2021-10-14
21.04
Hirsute Hippo
2021-04-22 [13]  
20.10
Groovy Gorilla
2020-10-22
20.04 LTS
Focal Fossa
2020-04-23
19.10
Eoan Ermine
2019-10-17
19.04
Disco Dingo
2019-4-19
18.10
Cosmic Cuttlefish
2018-10-18
18.04 LTS
Bionic Beaver
2018-04-26
17.10( GNOME成为默认桌面环境)
Artful Aardvark
2017-10-21
17.04
Zesty Zapus
2017-04-13
16.10
Yakkety Yak
2016-10-20
16.04 LTS
Xenial Xerus
2016-04-21
15.10
Wily Werewolf
2015-10-23
15.04
Vivid Vervet
2015-04-22
14.10
Utopic Unicorn
2014-10-23
14.04 LTS
Trusty Tahr
2014-04-18
13.10
Saucy Salamander
2013-10-17
13.04
Raring Ringtail
2013-04-25
12.10
Quantal Quetzal
2012-10-18
12.04 LTS
Precise Pangolin
2012-04-26
11.10
Oneiric Ocelot
2011-10-13
11.04( Unity成为默认桌面环境)
Natty Narwhal
2011-04-28
10.10
Maverick Meerkat
2010-10-10
10.04 LTS
Lucid Lynx
2010-04-29
9.10
Karmic Koala
2009-10-29
9.04
Jaunty Jackalope
2009-04-23
8.10
Intrepid Ibex
2008-10-30
8.04 LTS
Hardy Heron
2008-04-24
7.10
Gutsy Gibbon
2007-10-18
7.04
Feisty Fawn
2007-04-19
6.10
Edgy Eft
2006-10-26
6.06 LTS
Dapper Drake
2006-06-01
5.10
Breezy Badger
2005-10-13
5.04
Hoary Hedgehog
2005-04-08
4.10(初始发布版本)
Warty Warthog
2004-10-20

Debian的代号:

1、去掉文件夹的锁:

sudo chmod -R 777 路径(文件夹或文件)
2、麒麟的远程桌面登陆
打开"我的电脑"->工具->连接到服务器->类型中选择"SSH",输入对方ip、用户名、密码,点击"连接"。
3、分页显示命令结果

history | less    //空格前进,b后退,q退出
ps -ef | less

4、查找文件中的内容
目录在后

# -r:递归  -n:显示行号 -i:不区分大小写
grep -r '8.8.8.8' ./  -n  
grep -E 等同于 egrep 用于正则表达式

5、查找文件
目录在前

sudo find / -name "*init*"
sudo find / -iname init    #不区分大小写
find ./ -name "zz123*" -exec ls -l {} \;  #对搜索的结果执行后面的命令,全部传
find ./ -type d -ok rm -rf {} \;    #对每次操作进行询问确认
find ./ -name  "*.so" | xargs ls -l \;  #对搜索的结果执行后面的命令,分批传,防内容太多
find ./ -name  "*.so" -print0 | xargs -0 ls -l \;  #对搜索的结果执行后面的命令,分批传,防内容太多,默认用空格作分隔标记,对文件名中有空格的要换一个结束标记,此处用0
-atime|ctime|mtime    #access:访问  change:文件内容修改 modify:文件属性修改

6、按行处理 sed

/pattern1/pattern2/    #其中要对大小括号进行转义,\(  \)  \{   \}
# a: append 追加   
# i:insert  
# d:delete   
# s:substitute 替换 
# p:print打印
sed 's/the/this/' test.sh   #将test.sh文件中读到缓存中的the替换成this,只开头 -g 全部
sed 's/the/this/' test.sh  -i  #将替换写入到文件中
sed -i "2,5d" testfile      #删除第2到第5行
sed -i "2a cast" testfile   #第2行后追加cast
sed -i '/echo/d' testfile   #将有echo的行删除
sed -i 's/<[^>]*>//g] testfile #将html中的标签全去掉

pattern2中
&:表示pattern1中匹配的字符
\1:表示与pattern1中第1个括号匹配的字符
\2:表示与pattern1中第2个括号匹配的字符

7、按列处理 awk

awk缺省的行分隔符是换行,列分隔符是连续的空格和Tab。但行、列分隔符都可以自定义。

ps -aux | awk '{print $2}'     #只显示第2列
ps -aux | awk '$2>5000 && $2<6000 {print $2}'  #显示5000-6000的进程号
ps -aux | awk '$2>5000 && $2<6000 {var=var+1} END {print var}'  #显示5000-6000的进程个数
awk '{print $2;}'   testfile

awk '$2<75 {printf $0 " reorder";} $2>=75 {print $0;}' testfile 
awk '$2<75 {printf "%s %s\n",$0,"reorder";} $2>=75 {print $0;}' testfile 
awk '$2<75 {printf("%s %s\n",$0,"reorder");} $2>=75 {print $0;}' testfile 

awk '/^ *$/ {var=var+1} END {print var}' testfile  #统计文件中空行的个数
sudo awk 'BEGIN {FS=":"} {print $2}' /etc/passwd   #重定义列分隔符
sudo awk -F: '{print $1}' /etc/passwd              #重定义列分隔符

awk常用内建变量:

FILENAME    当前输入文件的文件名,该变量是只读的
NR          当前行的行号,只读,R:record
NF          当前行所拥有的列数,只读,F:field
OFS         输出格式的列分隔符,缺省是空格
FS          输入文件的列分隔符,缺省是连续的空格和Tab
ORS         输出格式的行分隔符,缺省是换行符
RS          输入文件的行分隔符,缺省是换行符

8、ps

ps [选项]  
-e   显示所有进程。 
-f   全格式。 
-h   不显示标题。 
-l   长格式。 
-w   宽输出。 
-a   显示终端上的所有进程,包括其他用户的进程。 
-r   只显示正在运行的进程。
-u  以用户为主的格式来显示程序状况。
-x   显示所有程序,不以终端机来区分。

ps -ef 显示出的结果: 
 1UID       用户ID 
 2、PID       进程ID 
 3PPID      父进程ID 
 4、C         CPU占用率 
 5、STIME     开始时间 
 6、TTY       开始此进程的TTY----终端设备 
 7、TIME      此进程运行的总时间 
 8、CMD       命令名

fcitx的配置文件是~/.fcitx/config
但是直接用 gedit ~/.fcitx/config 打开配置文件显示的也都是乱码,解决办法就是指定编码方式打开“sudo gedit --encoding gbk ~/.fcitx/config” Ubuntu默认的编码方式是UTF-8格式,因此需要通过gbk方式来打开该文件。

9、ubuntu进入recovery修改文件

在Ubuntu上使用恢复模式及Recovery Mode各选项的使用方法
开机时一直按住shift键,进入grub界面–》Advanced options for ubuntu----》Recovery mode----》root

10、保存fitcix的配置

保存配置:ctrl+alt+s

11、su鉴定故障解决

sudo passwd root     //更新密码
sudo vim /etc/passwd
修改为:
root:x:0:0:root:/root:/bin/bash    //原来是 bin/bash

12、man

man 1是普通的shell命令,(如ls)
man 2是系统调用,(比如open,write说明),
man 3是函数说明,一些库函数。

13、mkdir

mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
mkdir -p xx/yy的好处就是一次可以创建多级文件夹,若xx文件夹不存在,则先创建xx文件夹,然后在xx文件夹下创建yy文件夹

14、ln -s

ln -s 源文件 目标文件
ln -s 源文件 软链接

15、网络重启

sudo service network restart
sudo service network-manager restart			#网络管理员服务
sudo systemctl restart NetworkManager.service	#systemctl命令
sudo nmcli networking off						#nmcli
sudo nmcli networking on
sudo ifdown -a									#ifup、ifdown
sudo ifup -a

16、ifconfig

nmtui解决network-scripts目录下无网卡对应配置文件问题
centOS 7下无法启动网络(service network start)错误解决办法

ifconfig
/etc/sysconfig/network-scripts/ifcfg-ehtxxx			#网卡对应的配置文件
#确定如何对应哪个网卡
cat  /etc/sysconfig/network-scripts/ifcfg-ehtxxx   	#uuid
nmcli con show										#查看所有网卡的UUID
nmcli connection show 

arp -a
ifconfig
sudo ifconfig enp1s0 down 				#禁掉重复的一个
#/etc/sysconfig/network-scripts/ifcfg-ehtxxx			#网卡对应的配置文件
vi ifcfg-eth2   

#把文件内容改为下面内容:
DEVICE=eth2 (这个地方必须是你前面查看时的网卡名)
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.181.10
NETMASK=255.255.255.0    (ip、子网、网关都是根据自己的实际情况配置的)
GATEWAY=192.168.181.1

17、查看tcp连接

netstat -an|grep tcp
netstat -anl | grep 9000

18.进程间通信

linux进程间通信4种方式

19. apt-get install和源码编译安装区别

  • apt-get install 安装的是由源码包编译过的二进制包,供应商在编译过程中已经解决掉包之间的依赖关系的,因此直接安装即可,会直接帮你处理依赖关系。apt-get install安装目录是包的维护者确定的,不是用户。系统安装软件一般在/usr/share,可执行的文件在/usr/bin,配置文件可能安装到了/etc下等。文档一般在 /usr/share;可执行文件 /usr/bin;配置文件 /etc;lib文件 /usr/lib。
  • 使用源码包要./configure、make、make install手动编译,需要自己解决所依赖的源码包,本质上和apt-get安装没有区别,但是使用源码编译安装可以自定义安装的位置等内容。
  • 获取源码:sudo apt-get source tree(获取tree的源码)
./configure  --prefix=/home/userX/git
make && make install  

20、df -h和du -h

du -h --max-depth=1     #(disk usage)显示当前目录下文件大小,目录深度为1
df -h 					#(disk free)显示磁盘可用空间和挂载点
fdisk -l				#输出设备的所有分区内容和操作分区(删除,新增)
lsblk					#列出所有可用块设备的信息,显示其依赖关系

lsblk参数:

21. 挂载新磁盘

Ubuntu新增硬盘的方法
Linux(Ubuntu)如何处理新添加的硬盘
Linux之挂载新的硬盘(fdisk详细)

#关机状态下将硬盘装在电脑上,重启电脑,后查看/dev/ 下有没多了一块硬盘
ls /dev
fdisk -l					#查看磁盘(/dev/sda开始,第二次添加就是/dev/sdb)
lsblk -f
ls /sys/class/scsi_host/	#查看总线

fdisk /dev/sdb				#对磁盘分区,依次输入 n(添加分区) , p(主分区), 1(第1个分区), w(保存操作)
lsblk -f
mkfs -t ext4 /dev/sdb1 		#格式化分区为ext4格式

sudo mkdir data
sudo mount -t ext4 -o rw,relatime /dev/sdb /data #临时挂载
df -h 						#查看

vi /etc/fstab         		#永久挂载写到开机挂载磁盘文件(/etc/fstab)中
# 在文件中加入下面代码
/dev/sdb1               /data                   ext4     defaults        0 0

22、根目录扩容

麒麟Linux系统根目录与单目录扩容详解,适用于大多数的centeros系统
虚拟机linux扩充/home内存容量
新硬盘挂载到home:

fdisk -l  				#查看新增的的磁盘
fdisk /dev/vdb			#1、对新增磁盘进行分区
						#按提示操作: p打印  n新增 d 删除 w操作生效 q退出
						#操作后: w 
partprobe   			#强制让内核重新找一次分区表(更新分区表)
mkfs -t ext4 /dev/vdb1  #2、分区格式化,格式化为ext4格式

#3、将新硬盘临时挂载在一个目录下,将原home内容拷贝至新home中
cd /mnt/
mkdir home
mount /dev/vdb1 /mnt/home  	#挂载到/mnt/home
df -h  查看
cp -a /home/* /mnt/home/  	#把home下的东西拷到挂载的目录下,备份
rm -rf /home/* 				#把home下的东西删干净
umount /dev/vdb1  			#卸载硬盘
df -h  						#查看

#4、设置开机挂载
vi /etc/fstab				#末尾增加一行
	/dev/vdb1  /home  ext4  defaults  1  2
df -h  						#查看 /home是否被挂载

mount -a 挂载/etc/fstab 中未挂载的分区
df -h  查看

22、ssh连接

sudo vim /etc/ssh/sshd_config  #放开port22和PermitRootLogin
sudo systemctl restart sshd
sudo /etc/init.d/ssh restart

ssh服务:

23、禁用鼠标中键粘贴

Linux(deepin)系统 禁用鼠标中键复制以及键盘改建

xmodmap -e "pointer = 1 25 3 4 5 6 7 8"

若要保留此行为,请编辑~/.Xmodmap并添加:

pointer = 1 25 3 4 5 6 7 8 9

24、命令更改屏幕分辨率

xrandr		//查看支持的分辨率
xrandr -s 1920 x 1080	//设置分辨率,这个最好复制上面的查询结果

25、分包

split命令详解

#Linux上分包
split -b 400M -d -a 1 test.zip testsplit.zip
#windows上合并
copy /b 20130428.part000+20130428.part001 backup.tar.gz

26、kylin相关问题

银河麒麟服务器版是基于centos的,银河麒麟桌面版是基于debain的

26.1 软件源

首页:https://archive1.kylinos.cn/kylin/KYLIN-ALL/
i386:https://archive1.kylinos.cn/kylin/KYLIN-ALL/pool/v101-i386/
主库:https://archive1.kylinos.cn/kylin/KYLIN-ALL/pool/main/
通用库:https://archive1.kylinos.cn/kylin/KYLIN-ALL/pool/universe/
Debian库:https://packages.debian.org/sid/amd64/libc6/download

wps-office:https://www.wps.cn/product/wpslinux#

libc6-dev:在目录main/glibc目录下,太难找了

#安装方法
dpkg -i *.deb
dpkg -i gcc.deb

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

26.2 删除自动启动

cd /home/kylin/.config/autostart
#进入后删除对应的启动项

26.3 Qt安装问题

26.4 关闭kylin安全认证

配置KylinV10

sudo vim /etc/default/grup
sudo update-grub
reboot

26.5 麒麟编程注意点

char 为unsigned char, windows为signed char
long 为8字节,windows为4字节

27、dos2unix

find . -type f -exec dos2unix {} \;

28、linux启动过程及开机自启动

28.1 启动顺序

  1. 启动内核
  2. 执行init(配置文件/etc/inittab)
  3. 启动相应脚本。执行inittab脚本,及/etc/init.d、rc.sysinit、rc.d、rc.local…
  4. 启动登录界面
  5. 用户登陆时执行脚本顺序:/etc/profile、/etc/bashrc、/root/.bashrc、/root/.bash_profile

28.2 /etc/inittab

inittab文件中定义的登记项都是以:隔开的四个段,即:

 id:runlevels:action:process   

id:它是每个登记项的标识符,用于唯一标识每个登记项,不能重复
id 用来定义缺省的init运行的级别
si 是系统初始化的进程
ln 其中的n从1~6,指明该进程可以使用的runlevel的级别
ud 是升级进程
ca 指明当按下Ctrl+Alt+Del时运行的进程
pf 指当UPS表明断电时运行的进程
pr 是在系统真正关闭之前,UPS发出电源恢复的信号时需要运行的进程
x 是将系统转入X终端时需要运行的进程

runlevels:系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,各级别之间直接写不用分隔符;如果为空,表示在所有的运行级别运行。Linux的运行级别有:
0:表示关机
1:表示单用户模式,在这个模式中,用户登录不需要密码,默认网卡驱动是不被加载,一些服务不能用。
2:表示多用户模式,NFS服务不开启
3,表示命令行模式
4,这个模式保留未用
5,表示图形用户模式
6,表示重启系统

action:表示对应登记项的process在一定条件下所要执行的动作。
具体动作有:
respawn:当process终止后马上启动一个新的
wait:当进入指定的runlevels后process才会启动一次,并且到离开这个runlevels终止
initdefault:设定默认的运行级别,即我们开机之后默认进入的运行级别,不能是0,6,你懂的
sysinit:系统初始化,只有系统开机或重新启动的时候,这个process才会被执行一次
powerwait:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,会等待这个进程完成之后,再执行相应的process
powerfail:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,不会等待这个进程完成,它会直接执行相应的process
powerokwait:电源已经故障,但是在等待执行对应操作的时候突然来电了就执行对应的process
powerfailnow:当电源故障并且init被通知UPS电源已经快耗尽执行相对应的process
ctrlaltdel:当用户按下ctrl+alt+del这个组合键的时候执行对应的process
boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,也不重新启动该进程
bootwait:只有在引导过程中,才执行该进程,并等待进程的结束;当该进程死亡时,也不重新启动该进程
off:如果process正在运行,那么就发出一个警告信号,等待20秒后,再通过杀死信号强行终止该process。如果process并不存在那么就忽略该登记项
once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个登记项;当该进程死亡时,init也不重新启动该进程

process:表示启动哪个程序或脚本或执行哪个命令等

28.3 开机启动

Ubuntu系统设置开机自启
在Linux系统中实现开机自动运行脚本的完整指南(有systemd)
银河麒麟之语言设置和服务开机自启动设置

开机自启方式有:

/etc/inittab
/etc/rc.d/rc.local			#试这个吧
/etc/init.d/				#使用Update-rc.d命令,最好别用,开不了机了
/etc/profile
/etc/profile.d/
/etc/systemd/system/

(1)rc.local方式
centos默认不启动rc.local

vim /etc/rc.local
#!/bin/bash
nohup /home/kylin/mystart.sh &
exit 0

nohup和&的区别:

  • & : 指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
  • nohup : 不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
#这样就能使命令永久的在后台执行
nohup COMMAND &	
nohup java -jar do_iptable.jar >/dev/null 2>&1 &
nohup php server1.php </dev/null &>/dev/null &

(2)使用init.d目录脚本实现开机自动运行
编辑一个启动脚本.sh文件,文件头部可以参照init.d目录下的现有文件,比如ssh,smbd等,头部文件必要严格按照样式填写。最后添加需要执行的实际命令或者脚本。

root@wuhs-pc:/etc/init.d# cat autovpn.sh
#! /bin/sh
### BEGIN INIT INFO
# Provides: openvpn
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OpenBSD Secure Shell server
### END INIT INFO

nohup /etc/openvpn/client/startvpn.sh &
exit 0
chmod 777 autostart.sh
sudo mv autostart.sh /etc/init.d/
sudo update-rc.d autostart.sh defaults	90	#将脚本文件添加到服务,开不了机了

Update-rc.d 命令用法详解

sudo update-rc.d xxxxx.sh defaults 90 
sudo service --status-all 					#    重启 查看全部服务列表    
sudo service xxx status
sudo service xxx start
sudo service xxx stop
sudo service xxx restart
sudo update-rc.d -f xxxxx.sh remove			#    禁用开机脚本 

不用update-rc.d,就用创建软链接方式到rc【x】.d目录。
如下:/etc/rc.d/rc0.d/~/etc/rc.d/rc6.d/文件夹的含义不同,S开头代表是开启时处理的脚本,按照后面紧跟的数字进行按顺序启动,S99则是最后进行启动。

#最后添加软连接
ln -s /etc/init.d/autovpn.sh /etc/rc2.d/S99autovpn

(3)kylin设置里添加自启动服务
将desktop文件加入到自启中。要在开始菜单中显示,将其拷贝到 /usr/share/applications 目录下

[Desktop Entry]
Type=Application
Version=0.1.0
Name=主程序
Comment=这是程序介绍
Exec="/home/kylin/myapp"
Icon=/home/kylin/pic/123.svg
StartupNotify=false
Terminal=false

(4)systemd启动
redis开机启动

29、su命令

#变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)
su - clsung
su - root -c 'vncserver :1 -geometry 1920×1080'

30、双网卡不能同一网段

双网卡不能设置为同一网段,后面这个网卡的IP将自动路由到前面一个网卡上,因此使用其中一个时候需要下线另外一个网卡(拔掉另一根网线)
Linux双网卡设置IP属于同一网段的ping方法以及现象记录分析
解决方法:
Linux双网卡配置相同IP段解决方案

#echo 1 >/proc/sys/net/ipv4/conf/all/arp_filter

31、自动输入

1、用echo 管道命令自动给sudo输入密码

echo 密码|sudo -S 命令

#这种方式使用脚本运行管理员命令时,能够自动运行,不被sudo 密码中断,但是密码会明文显示,密码不安全

2、Linux_shell自动输入y或yes

# 一次
echo yes|[命令]
echo y|[命令]
# 多次
yes yes|[命令] 
yes y|[命令]

32、无密码运行sudo

Linux:设置sudo无需密码【Ubuntu、多种方法】

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐