# Liunx

Linux 是一个通用的操作系统,操作系统通常由内核(运行其他程序,管理像磁盘、打印机等硬件设备的核心程序)和系统程序(设备驱动,底层库,shell,服务程序等)两部分组成。

# 基础命令

linux系统的命令通常都是如下所示的格式:

命令名称 [命令参数] [命令对象]

1、获取登录信息- w / who / last / lastb

2、查看自己使用的shell- ps

3、查看命令的说明和位置- whatis / which / whereis

另外还有查看命令的位置,例如:command -v php 如果是符号链接,查看指向哪里,例如:ls -l /usr/bin/php

4、清除屏幕上线上的内容- clear

5、查看帮助文档- man / info / --help / apropos

6、查看系统和主机名- uname / hostname

另外还有查看操作系统详细信息:cat /etc/os-release

7、时间和日期- date / cal

8、重启和关机- reboot / shutdown

9、退出登录- exit / logout

10、查看历史命令- history

# 实用程序

# 文件和文件夹操作

# 创建/删除空目录
mkdir -p abc/xyz

rmdir -p zbc/xyz

# 创建/删除文件
touch a.txt

rm a.txt

rm -rf xyz

# 切换和查看当前工作目录

cd abc

cd -

pwd

# 查看目录内容

ls

# 查看文件内容

cat a.txt

tac a.txt

head -10 a.txt

tail -20 a.txt

more a.txt

less a.txt

rev a.txt

od a.txt

# 拷贝和移动文件

cp abc xyz/

mv a.txt xyz/

# 查找文件和查找内容

find . -name *.txt

grep "<script>" sohu.html -n

# 创建链接和查看链接,链接分为硬链接和软连接
ln source_file link_name # 硬链接,硬链接是指向同一文件索引的不同文件名

ln -s source_file link_name # 软链接,软链接是一个特殊的文件,它包含一个指向另一个文件的路径

ls -li filename # 查看链接

# 压缩与解压缩

tar -czvf archive.tar.gz directory_or_file # 打包

tar -xzvf archive.tar.gz # 解压

# 管道和重定向

# ps -ef 列出所有进程,然后通过 grep "process_name" 过滤出包含特定进程名的行,最后 wc -l 计算这些行的数量
ps -ef | grep "process_name" | wc -l

在Linux中,重定向是一种强大的功能,它允许用户将命令的输出或输入从一个位置转移到另一个位置,而不是使用默认的屏幕或键盘。重定向主要分为输出重定向和输入重定向两种。

输出重定向是将命令的标准输出(stdout)或标准错误(stderr)重新定向到文件或其他命令中

# 标准输出重定向(覆盖):使用 > 符号
command > file.txt

# 标准输出重定向(追加):使用 >> 符号
command >> file.txt

# 标准错误重定向:使用 2> 符号。它将命令的标准错误重定向到指定的文件中,而标准输出仍然显示在屏幕上
command 2> err.txt

# 标准错误重定向(追加):使用 2>> 符号
command 2>> error.txt

# 同时重定向标准输出和标准错误
command &> output.txt
command > output.txt 2>&1

# 输入重定向,是将命令的标准输入(stdin)从文件或其他命令中读取,而不是从键盘读取
command < file.txt

# 别名

# 别名的定义
alias 别名='命令或命令序列'

alias cls="clear"

alias my_sequence='cd /path/to/directory && ls -l'

默认情况下,通过alias命令定义的别名仅在当前会话中有效。如果你希望别名在每次登录时都能自动生效,可以将别名定义添加到适当的配置文件中。常用的配置文件包括:

  • ~/.bashrc:用于个人用户的Bash配置

  • ~/.bash_profile:用于个人用户的Bash登录配置

  • /etc/bash.bashrc:用于全局Bash配置

  • /etc/profile:用于全局登录配置

为了使更改立即生效,可以使用 source 命令。

# 用户管理

# 添加用户并创建家目录
useradd -m username

# 删除用户
userdel -r username

# 修改用户密码
passwd username

# 修改用户信息
usermod

# 切换用户身份
su username

# 列出所有用户信息

cat /etc/passwd

# 创建用户组
groupadd 

# 删除用户组
groupdel 

# 以管理员身份执行命令
sudo 

# 查看sudoers文件
cat /etc/sudoers

# 显示用户与用户组的信息
id 
id username

# 访问权限

# 改变权限
chmod 777 file

# 改变文件的所有者
chown username file

# 更改文件的所属组
chgrp groupname file

# 软件的安装和配置

# 使用包管理工具

# yum

yum使用软件仓库来检索和安装软件包。用户可以通过编辑/etc/yum.repos.d/目录下的.repo文件来添加、修改或删除软件仓库。

# 搜索软件包
yum search nginx

# 列出已经安装的软件包
yum list installed

# 安装软件包
yum install nginx

# 删除软件包
yum remove nginx

# 更新软件包
yum update # 更新所有软件包
yum update tar # 只会更新 tar

# 检查那些可以更新的软件包
yum check-update

# 显示软件包的信息
yum info nginx

# rpm

rpm 允许用户直接以二进制方式安装软件包,并自动处理依赖关系

# 安装软件包
rpm -ivh <packagename>.rpm

# 移除软件包
rpm -e <packagename>

# 查询指定软件包是否已经安装
rpm -q package_name

# 列出系统上所有已安装的软件包
rpm -qa

# apt
# 更新本地的软件包列表
sudo apt update

# 安装软件包
sudo apt install git

# 卸载软件包
sudo apt remove git

# 注意,apt remove只会删除软件包本身,而不会删除其配置文件。如果你还想删除配置文件,可以使用apt purge命令
sudo apt pruge git

# 搜索软件包
sudo apt search git

# 源代码安装

# 配置服务

Linux下的大多数服务都被设置为守护进程,所以我们安装的服务通常名字后面都有一个字母d,它是英文单词daemon的缩写。比如防火墙服务firewalld,mysql服务mysqld,Apache服务httpd等。在安装好服务之后,可以使用systemctl命令或servcie命令来完成对服务的启动,停止等操作。

# 启动防火墙服务
systemctl start firewalld

# 终止防火墙服务
systemctl stop firewalld

# 重启防火墙服务
systemctl restart firewalld

# 查看防火墙服务状态
systemctl status firewalld

# 设置防火墙服务开机自启
systemctl enable firewalld

在linux中,如何设置服务开机自启?

  • 使用systemctl

创建一个新的服务单元文件,例如/etc/systemd/system/myservice.service

编辑文件并定义你的服务。例如:

[Unit]  
Description=My Custom Service  
After=network.target  
  
[Service]  
ExecStart=/path/to/your/service  
Restart=on-failure  
  
[Install]  
WantedBy=multi-user.target  

保存文件后,重新加载systemd配置:sudo systemctl daemon-reload

启用服务以使其在开机时启动:sudo systemctl enable myservice

现在你可以使用sudo systemctl start/stop/restart myservice来手动控制服务。

  • 使用SysVinit脚本

可以将启动脚本放在/etc/init.d/目录中,并使用update-rc.d或chkconfig(取决于你的发行版)来链接到适当的运行级别。

# 网络访问和管理

  • 安全连接 ssh
ssh root@192.168.2.56
  • 通过网络获取资源 wget

  • 发送和接收邮件 mail

  • 网络配置工具 ifconfig 或者 ip address

  • 网络可达性检查 ping

  • 显示网络服务和端口 netstat 或者 ss

  • 网络监听抓包 tcpdump

  • 文件同步工具 rsync

  • 安全文件传输 sftp

# 进程管理

  • 查看进程 ps

  • 显示进程树 pstree

  • 查找与指定条件匹配的进程 pgrep

  • 通过进程号终止进程 kill

  • 通过进程名终止进程 pkill / killall

  • 将进程置于后台运行 Ctrl + Z 快捷键用于停止进程并置于后台,& 将进程置于后台运行。

  • 查询后台进程 jobs

  • 用户登出后进程继续工作 nohup

nohup ping www.baidu.com > result.txt &
  • 跟踪进程系统调用情况 strace

  • 实时监控进程占用资源状况 top