Linux常用命令

常用基础命令

文章目录

1、 linux下删除文件夹的命令

rm -rf 目录名字

-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思

eg

删除文件夹实例:rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

删除文件使用实例:rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件

2、全局查询文件linux

在工作中,可能突然需要找到某个文件,这个又不知道,需要全局查询一下。

下面是命令行:

  find / -name "*.log" | xargs grep "elk"
  find / -name 名称

/:意思是从/开始进行查找。

意思是包含“elk”的行。

3、查看所有的用户和组

查看所有的用户

cat /etc/passwd

查看某个用户

cat /etc/passwd|grep 用户名

查看所有的组

cat /etc/group

查看当前用户所在的组,以及组内其他成员的信息

groups 

查看用户xxx所在的组

groups gliethttp

备注:
/etc/group文件包含所有组
/etc/shadow和/etc/passwd系统存在的所有用户名

更多操作,参考:https://blog.csdn.net/feifeiyechuan/article/details/94548982

4、清除屏幕

clear

4、Linux将命令添加到PATH中

1、直接在命令行中设置PATH
# PATH=$PATH:/usr/local/apache/bin
使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH设置就会失效。

2、在profile中设置PATH
# vi /etc/profile
找到export行,在下面新增加一行,内容为:export PATH=$PATH:/usr/local/apache/bin。
注:= 等号两边不能有任何空格。这种方法最好,除非手动强制修改PATH的值,否则将不会被改变。
编辑/etc/profile后PATH的修改不会立马生效,如果需要立即生效的话,可以执行# source profile命令。

3、在当前用户的profile中设置PATH
# vi ~/.bash_profile
修改PATH,/usr/local/apache/bin添加进去,如:PATH=$PATH:$HOME/bin:/usr/local/apache/bin。
# source ~/.bash_profile
让这次的修改生效。
注:这种方法只对当前用户起作用的,其他用户该修改无效。

5、ubuntu解压zip文件

step1 # 安装解压软件
sudo apt-get install unzip

step # 2 解压文件
unzip    xxxxx.zip

6、Ubuntu解压缩zip,tar,tar.gz,tar.bz2

ZIP

zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。闲话少说,我们步入正题吧:

我们可以使用下列的命令压缩一个目录:

# zip -r archive_name.zip directory_to_compress

下面是如果解压一个zip文档:

# unzip archive_name.zip

TAR

Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。下面是如何打包一个目录:

# tar -cvf archive_name.tar directory_to_compress

如何解包:

# tar -xvf archive_name.tar.gz

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

# tar -xvf archive_name.tar -C /tmp/extract_here/

TAR.GZ

这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。使用下面这种格式去压缩一个目录:

# tar -zcvf archive_name.tar.gz directory_to_compress

解压缩:

# tar -zxvf archive_name.tar.gz

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

# tar -zxvf archive_name.tar.gz -C /tmp/extract_here/

TAR.BZ2

这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。这个就是你如何使用tar.bz2进行压缩。

# tar -jcvf archive_name.tar.bz2 directory_to_compress

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

# tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/

7、Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)

https://blog.csdn.net/zhangliao613/article/details/79021606

8、Linux基础命令—间歇执行命令—watch

watch –n 3 ls
watch

        watch指令可以间歇性的执行程序,将输出结果以全屏的方式显示,默认是2s执行一次。watch将一直运行,直到被中断。

        此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

参数选项列表
在这里插入图片描述

9、linux编辑只读文件出不来怎么办

:wq!

10、linux通过命令框传文件

yum install lrzsz
# 安装完成直接拖拽就行

11、开放端口防火墙

1.查看下防火墙的状态:systemctl status firewalld



需要开启防火墙 systemctl start firewalld.service  

firewall-cmd --zone=public --list-ports       ##查看已开放的端口
2.添加8484端口到白名单 执行

 firewall-cmd --permanent --zone=public --add-port=8484/tcp

提示 success 表示成功



命令含义

--zone #作用域
--add-port=8484/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效

3.重启防火墙:添加成功之后需要重启防火墙

firewall-cmd --reload

4.测试



 

其他常用命令:

firewall-cmd --state                          ##查看防火墙状态,是否是running
firewall-cmd --reload                          ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones                      ##列出支持的zone
firewall-cmd --get-services                    ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp              ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp                ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent    ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent  ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent    ##永久添加80端口 
firewall-cmd --remove-port=80/tcp --permanent    ##永久添加80端口 
firewall-cmd --zone=public --list-ports       ##查看已开放的端口

iptables -L -n                                ##查看规则,这个命令是和iptables的相同的
man firewall-cmd   

12、复制文件和复制文件夹

1- 只复制一个文件

cp /media/dataindex/collection /usr/bin/

2- 递归复制文件夹里面的所有内容

cp -r /media/dc/log/ /media/dataindex 

13、vim常用命令

1、查看前10行
cat file_path | head -n 10
2、查看后10行
cat file_path | tail -n 10
3、查看文本行数
cat file_path | wc -l
4、查看5行开始的后10行,即5-14
cat file_path |tail -n +5| head -n 10
5、查看5行开始到最后一行
cat file_path | tail -m +5

1、常见问题 - vi 编辑模式下,提示visual 模式,不能使用鼠标复制和粘贴。此时需要配置vim文件,才可使用鼠标
解决方法,新建/打开 ~/.vimrc:
vi ~/.vimrc
输入如下内容:

if has('mouse')
        set mouse-=a
endif

保存,退出即可解决。

14、文件、文件夹大小

du -sh 文件夹/文件

du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序

du -sk filename 查看指定文件大小

15、查看文本内容的行数

# 以下方法均可
wc -l test1.txt
sed -n '$=' test1.txt
cat test1.txt | wc -l

16、合并文件和切分文件

# 切分文件 - split
split用来将大文件分割成小文件。
split –output-file-size input-filenameoutput-filename
按每个文件2行分割: split -2 split1

split -l 50 wlan_date.txt wlan
拆分后会生成 wlanaa wlanab wlanac 三个文件,wlanaa wlanab两个文件分别50行,wlanac文件剩下20行

# 合并数据,将file1,file2,file3合并为file
cat file1 file2 file3 > file

17、yum的用法

https://blog.csdn.net/zhaoyanjun6/article/details/78894974

18、批量删除进程

ps -ef | grep java
kill -9 $(ps -ef | grep java) # 删除cmd进程中有java的所有进程

// 安装netstat
yum install net-tools
// 关闭进程
kill -9 $(netstat -tlnp|grep 7071|awk '{print $7}'|awk -F '/' '{print $1}') # 删除端口
lsof -i:8080 | awk "{print $2}" | grep -v "PID" | xargs kill -9	# 删除端口
ps -ef | grep stress | grep -v uwsgi | cut -c 9-15 | xargs kill -9  # 删除关键字

19、查看外网ip

curl cip.cc

20、更改系统时间为TSC中国时区

1、硬件时间和系统时间同步
hwclock --systohc
2.修改文件vi /etc/sysconfig/clock,添加内容:
ZONE=Asia/Shanghai
UTC=false
ARC=false
3.  链接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

亲测可用:

linux修改系统时间为北京时间(CentOS)
删除本地时间
rm -rf /etc/localtime
设置时区为上海
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
利用date查看时间
修改成功

21、linux 根据进程号PID 查找程序的启动路径


1.我们可以从ps命令中得到进程的PID,如23347。

2.进入/proc目录下以该PID命名的目录。

3.输入ls -ail,结果中exe链接对应的就是可执行文件的全路经详细信息。

22、ubuntu修改ssh登陆端口

#查看是否安装过ufw
sudo dpkg --get-selections | grep ufw

#安装ufw
sudo apt-get install ufw

#默认规则为拒绝
ufw default deny

#防火墙50022端口的tcp访问
sudo ufw allow 50022

#vnc服务端口
sudo ufw allow 5901
sudo ufw allow 5902

#将22端口改为50022
sudo vi /etc/ssh/sshd_config

#重启ssh服务
service sshd restart

#查看更改是否生效
netstat -tlnp

#防火墙生效并开机启动
ufw enable

#检查设置规则
sudo ufw status

22-1、centos7修改ssh登陆端口

参考:Centos 7 修改 SSH 默认端口号

23、使用ll替换 ls -alF

打开文件vi ~/.bashrc, 添加一下内容

alias ll='ls -alF'

加载文件:

source ~/.bashrc

24、Ubuntu防火墙设置

查看防火墙状态:ufw status
打开防火墙:sudo ufw enable
重启防火墙: sudo ufw reload
开放指定端口: ufw allow 8080

25、临时修改系统时间

date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523               //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01               //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"  //这样可以设置全部时间
date -s "01:01:01 20120523"    //这样可以设置全部时间
date -s "2012-05-23 01:01:01"  //这样可以设置全部时间
date -s "20120523 01:01:01"    //这样可以设置全部时间

26、测试端口是否通畅

ping ip port
telnet ip port

27、vim快捷键

o:移动到下一行另起一行
O:移动到上一行另起一行
a:在光标前插入数据
A:光标回到一行最前端
x:删除光标所在位置的数据
u:撤回
dd:删除(剪切)一行
:模式:set number 回车
d3d:剪切光标所在行共3行
yy:复制光标所在行,p粘贴
G:光标到最后一行
gg:光标到第一行
9G:光标到第9行
r:替换单个字母
/:查找,n继续往下翻,N往前翻
:模式下:6,8s/nologin/NOLOGIN/g    替换指定行数的指定内容(不加g代表替换第一个,加g代表替换全局所有)
CTRL+v:可视化块模式:可以选中一块数据

28、centos 各版本基础库下载

https://archive.kernel.org/centos-vault/

29、访问内网主机–ssh反向穿透+端口转发

参考CSDN

30、/var/cache/apt/archives空间太小报错

使用软连接方法:

# 清除所有已下载的过期安装包
sudo apt-get autoclean
# 清除所有已下载的安装包
sudo apt-get clean

# 在某个空间大的分区建立一个目录,然后把/var/cache/apt/archives换成指向那个目录的软链接
mkdir -p "$HOME/debs/partial"
sudo rm -rf /var/cache/apt/archives
sudo ln -s "$HOME/debs" /var/cache/apt/archives

31、磁盘挂载

1)分区硬盘挂载参考

磁盘挂载参考

2)移动硬盘/U盘挂载问题

正常移动硬盘挂载会出现‘mount: 未知的文件系统类型ntfs’,解决方式如下:
1-1 linux服务器有网络的情况下:

wget http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2013.1.13.tgz
tar -xvf ntfs-3g_ntfsprogs-2013.1.13.tgz
cd ntfs-3g_ntfsprogs-2013.1.13
./configure
make && make install

挂载:

mkdir /mnt/data
mount -t ntfs-3g  /dev/sdb1【分区】 /mnt/data

挂载成功到/mnt/data目录下,可以拷贝文件了
参考:Linux服务器挂载ntfs移动硬盘

3)centos单目录挂载多块硬盘

挂载前需要确认lvm2被安装:yum -y install lvm2 ,用于使用pvxxxx的命令。
参考:centos单目录挂载多块硬盘

32、linux根目录磁盘空间占满,docker存储目录迁移

参考内容

33、大文件的断点续传

rsync -avzP -e 'ssh -p TARGET_PORT' gaofei@TARGET_IP:TARGET_PATH LOCAL_PATH .

参数:
–progress: 显示拷贝进度
–partial:保留不完整文件,实现断点续传
–partial-dir=DIR:指定不完整文件的存储目录,而不是默认存储到目的地目录。
-P:包含–progress和–partial>
–rsh=ssh:使用ssh方式传输文件,注意:如果之前设置过ssh免密码登录,那么此时也就不需要密码了,非常方便
-v:显示详细信息
-a:归档模式。也就是以递归方式传输文件,并保持所有文件属性。>
-r:递归方式传输文件

rsync -e 'ssh -p 22' -av --copy-links --exclude='*' root@192.168.123.123:/usr/local/*

–copy-links: 复制软链接指向的文件而不是链接本身。
–exclude=‘*’: 排除所有文件,包括软链接指向的文件。
–copy-unsafe-links 选项告诉 rsync 仅复制软链接本身,而不会跟随链接指向的文件。

34、内网穿透,外网访问

1、安装autossh服务
下载安装包,也有可能不能下载,需要直接使用别人已经下载的安装包

  sudo apt-get install gcc make
  wget http://fossies.org/linux/privat/autossh-1.4e.tgz
  tar -xf autossh-1.4e.tgz
  cd autossh-1.4e
  ./configure
  make
  sudo make install

2、安装成功后,进行内网穿透
B 为内网,地址就用localhost或者内网地址
A 为外网地址
C 为其他客户

2.1 创建 A – > B 的穿透连接:

autossh -p 22 -M 11222 -fNR 11221:localhost:22 A的用户名@A的IP
or 
autossh -p 22 -M 11222 -NR 11221:localhost:22 A的用户名@A的IP &


-p      指定外网服务器的ssh端口(默认22)
-M      在外网服务器中指定一个端口,监听连接的状态,使断开后进行重连 
-f      隧道建立成功后在后台运行
-N      不执行远程指令
-L      建立本地SSH隧道,指定本地的某端口转发到远程主机的某端口
-R      建立远程SSH隧道,指定远程主机上的某端口转发到本地的某端口

-NR 11221:localhost:22 可理解为将本地的22端口转发/映射到A的11221端口,即A可通过自己的11221端口,连接到B

2.2 在A机器上访问B

ssh -p 11221 root@localhost

2.3 在 A 上正向代理

ssh -fgNL 11222:localhost:11221 root@A公网IP地址 -p A公网登录端口

2.4 在 C 机器上访问 B

ssh -p 11222 C的用户名@A的IP

2.5 参考
1) ssh反向代理+正向代理实现远程登录

2.6举例:

内网:autossh -p 7022 -M 6778 -NR '*:7024:内网ip:内网ssh22' root@远程ip
远程:ssh -fgNL 7026:localhost:7024 root@远程ip -p 7022

那么外网机器可以访问:远程ip:7026 来访问内网机器。

35、免密登录

首先生成公钥和私钥,输入如下命令,一路enter键即可。此时,在 ~/.ssh/ 目录下生成了公钥(id_rsa.pub)和私钥(id_rsa)

ssh-keygen -t rsa

以下两种方式是同样的

1、拷贝公钥
将机器B的公钥写入到机器A的用户验证中

cat /home/B/id_rsa.pub /home/A/.ssh/authorized_keys

2、访问写入

ssh-copy-id -p TARGET_PORT TARGET_USER@TARGET_IP

36、定时任务设置

1、定时任务设置:
Linux 定时执行任务【备份】

2、crontab 安装

yum -y install vim-enhanced.x86_64

3、crontab 启动配置

/etc/init.d/crond start     //启动服务
/etc/init.d/crond stop      //关闭服务
/etc/init.d/crond restart   //重启服务
/etc/init.d/crond reload    //重新载入配置
/etc/init.d/crond status    //查看crontab服务状态

37、Linux下mysql安装

mysql成功安装
mysql安装

38、Vnc图形化界面安装

windows可通过mstsc进行服务器GUI界面的远程登录
参考:Vnc安装

39、Uwsgi

a-防止内存溢出,程序奔溃
uwsgi uwsgi.ini --evil-reload-on-as 100 --evil-reload-on-rss 100
b-【uWSGI】 listen queue of socket (fd: 3) 错误分析

参考链接
如果用户访问量不大,可以这样使用:

(1)查看机器支持的最大并发数

sysctl -a | grep net.core.somaxconn

(2)启动

c-内存过大,导致内存溢出
--reload-on-as 100 --reload-on-rss 100
d-工程目录下有任何文件更改,重启uwsgi
py-auto-reload = 1
参考

uwsgi参数详解

40、设置linux上网DNS

通畅客户机在开启了外部网络时,让然访问不了外部网络,那么需要设置DNS。

vi  /etc/resolv.conf

输入:

nameserver 114.114.114.114

保存后,即可上网。

41、添加超级管理员

1、添加用户
useradd -m -s /bin/bash 【用户名】
2、添加到超级管理员组
usermod -g root 【用户名】
3、添加密码
passwd 【用户名】

参考:centOS7创建新用户,并添加超级权限

42、向葵

参考链接

43、文件压缩

参考链接
建议使用gzip,rar,zip

安装: 
apt install rar

rar 解压:
rar x  xxx.rar
或   rar   -e   xxx.rar

44、[超算]linux ssh无法连接

44-1 报错:Could not load host key: /etc/ssh/ssh_host_key

原因:

使用:ls -al /etc/ssh/sshd_*key 
可以发现,ssh主机密钥的大小被截断未0,无法被登录。

解决:
重新生成密钥

1)在Debian、Ubuntu或其衍生版上
rm -r /etc/ssh/ssh*key
dpkg-reconfigure openssh-server
无需重启服务,直接登录即可正常登录

2)在CentOS、RHEL或Fedora上
rm -r /etc/ssh/ssh*key
systemctl restart sshd


3)可以一键解决:
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

参考:could not load host key: /etc/ssh/ssh_host_rsa_key 无法启动ssh的一个解决办法

45、window server 开启远程连接

1、开启远程端口:3389
2、在控制面板的账户中更改Administration的密码,直接远程按照ip:port进行登录即可。

46、使用Yum update时,不升级内核的方法

RedHat/CentOS/Fedora使用 yum update 更新时,默认会升级内核。但有些服务器硬件(特别是组装的机器)在升级内核后,新的内核可能会认不出某些硬件,要重新安装驱动,很麻烦。所以在生产环境中不要轻易的升级内核,除非你确定升级内核后不会出现麻烦的问题。
如果不想升级内核而只更新其他软件包,有两种方法:

1、修改yum的配置文件 vim /etc/yum.conf,在 [main] 的最后添加 exclude=kernel*

2、直接在yum的命令后面加上如下的参数:

yum –exclude=kernel* update

**【阿里云】**CentOS 使用 yum update 命令不升级内核和操作系统的方法

vi /etc/yum.conf
 
# 在 [main] 的最后添加:
exclude=kernel*
# 和
exclude=centos-release*
# 按 Esc 键,输入 :wq,然后回车
# 大功告成!

最后总结

/etc/yum.conf[main]后面添加

exclude=kernel*
exclude=centos-release*

47、花生自启动

1)、进入自启动目录

cd /etc/systemd/system

2)、创建启动文件

touch phddns.service

3)、编辑文件

vi phddns.service 

输入以下内容:

[Unit]
Description=phddns Service
Wants=network-online.target
After=network.target
 
[Service]
Type=simple
# default start cmd
ExecStart=/usr/sbin/phddns start
# Suppress stderr to eliminate duplicated messages in syslog. NM calls openlog()
# with LOG_PERROR when run in foreground. But systemd redirects stderr to
# syslog by default, which results in logging each message twice.
StandardOutput=syslog
StandardError=null
 
 
[Install]
WantedBy=multi-user.target

4)、执行命令

systemctl enable phddns.service

5)、若出现一下提示,则启动成功
在这里插入图片描述
6)、验证

systemctl list-unit-files | grep phdd

若为 enabled 状态,则设置成功。

48、添加开机启动命令

1)进入以下目录

cd /etc/rc.d/init.d

2)创建并添加脚本命令

vi startup.sh

输入需要自启动的命令:

#!/bin/bash
#chkconfig: 345 88 14
xxxxxxxxxxxxxxxxxxxxxx

注:记得加前两行
3)增加脚本可执行权限

chmod +x /etc/rc.d/init.d/startup.sh

4)添加脚本到开机自动启动项目中

cd /etc/rc.d/init.d

chkconfig --add startup.sh

chkconfig startup.sh

49、nohup安装

yum install coreutils

50、yum更新不升级Linux内核

1)方法一:
vim /etc/yum.conf 在[main]的最后添加

exclude=kernel* 

exclude=centos-release*

2)方法二:
直接在yum的命令后面加上如下的参数

yum --exclude=kernel* update

51、gcc安装

安装gcc、c++编译器以及内核文件命令

yum -y install gcc gcc-c++ kernel-devel   

注:kernel-devel 是内核编译模块 不是升级内核,所以在不能升级内核的情况下,也可以照常使用这个,但是不能使用 yum updateyum upgrade

52、查看进程的开始时间

ps -p PID -o lstart		// PID为进程ID

53、Linux 系统离线包下载

1) Centos

centos7.8 安装包地址
注:其他版本的地址,同此。

54、Windows shell脚本–> linux shell脚本, 转换命令

1) 问题原因:在windows中的换行是 \r\n ,而linux中的换行是 \n,无法识别\r。所以需要进行转换。

2)转换命令:

sed -i 's/\r$//' xxx.sh

55、linux会话session窗口,记录会话日志

1)记录日志

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值