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
版本号
|
代号
|
发布时间
|
---|---|---|
22.04
|
Jammy Jellyfish
|
2022-04-22
|
21.10
|
Impish Indri
|
2021-10-14
|
21.04
|
Hirsute Hippo
| |
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 显示出的结果:
1、UID 用户ID
2、PID 进程ID
3、PPID 父进程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.进程间通信
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、分包
#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安全认证
27、dos2unix
find . -type f -exec dos2unix {} \;
28、linux启动过程及开机自启动
28.1 启动顺序
- 启动内核
- 执行init(配置文件/etc/inittab)
- 启动相应脚本。执行inittab脚本,及/etc/init.d、rc.sysinit、rc.d、rc.local…
- 启动登录界面
- 用户登陆时执行脚本顺序:/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 #将脚本文件添加到服务,开不了机了
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|[命令]