Linux 基础知识
文章目录
基本命令
-
hostname -i: 查看服务器本地IP
-
find: find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。 - <指定条件>: 所要搜索的文件的特征。 - <指定动作>: 对搜索结果进行特定的处理。 如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。 # find的使用实例: $ find ./ -name 'my*' 搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。 $ find ./ -name 'my*' -ls 搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。 $ find . -type f -mmin -10 搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
-
nohup: 不挂断地运行命令,该命令的一般形式为:nohup command &
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思(no hangup)。
-
dmesg: 查看系统日志错误
-
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
1
tail -f zsm.log # 显示文件最新追加的内容
-
如何判断Linux是32位还是64位:getconf LONG_BIT
-
查看linux系统发行版本的名称及其内核版本号的命令:hostnamectl 或 cat /etc/redhat-release 或 cat /proc/version 或 cat /etc/issue
-
文件上传下载
1 2 3
yum install lrzsx sz path/to/file // 下载文件,默认下载位置看 secure 等设置 rz -y // 按Enter键选择文件上传到当前目录
-
sudo
1 2
sudo su // 当前用户切换为超级用户 sudo su - www // 切换系统用户为 www 用户
-
ps 命令就是最基本同时也是非常强大的进程查看命令。
1 2
ps aux | grep php // ps 与grep 常用组合用法,查找特定进程 ps -A // 查看系统所有进程
-
top -c // top命令提供了系统的活动监视器, 点击大写字母M可以设置按占用内存大小排序,小写字母e设置进程占用内存单位,大写字母E设置总体内存使用情况单位
-
chmod:文件夹或文件授权
1 2 3
sudo chmod -R 777 /var/www (-R表示递归子文件夹及子文件) chmod +x ./test.sh #使脚本具有执行权限
文件详细信息中 drwxr-xr-x 所代表的意思
d :第一位表示文件类型,d是目录文件. l是链接文件. -是普通文件. p是管道
rwx :第2-4位表示这个文件的属主拥有的权限。r是读【4】. w是写【2】. x是执行【1】(例子:777:表示所有用户和组拥有读写执行权限,766表示拥有文件用户拥有读写执行权限,而该用户组和其他用户只有读写权限)
r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限
r-x :第8-10位表示其他用户所具有的权限
权限的计算方法,使用二进制:
例如“rwx”,二进制就是111,“2的2次方”+“2的1次方”+“2的0次方”=7;
“r-x",二进制就是101,“2的2次方”+“0的1次方”+“2的0次方”=3
-
chown:修改当前文件所有者
1
chown -R hadoop:hadoop path/to/file
-
解压缩
1 2 3
tar -czf lnmp.tar.gz lnmp/ //将 lnmp 文件打包并且将其用 gzip 压缩,名字为 lnmp.tar.gz tar xvf lnmp.tar.gz // 解压 unzip wx.zip // 解压
-
telnet 命令有很多用途,比如确定远程服务的状态,比如确定远程服务器的某个端口是否能访问。
1
telnet 63.172.25.18 3306 回车 # 测试3306端口是否能访问
-
监听端口是否启用/占用
1 2 3
netstat -apn | grep 11211 # 监听11211端口是否启用,11211为memcached占用的端口 lsof -i:端口号 # 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 lsof -iTCP:80 | grep LISTEN # 查看 80 端口被哪个应用占用了
-
history
1 2 3 4
history :查看最新历史命令 history | more : 查看最初历史命令,可以搜索 history | more +100 : 从第100条命令开始看 history | grep php : 搜素php相关命令
-
wget: 是一个下载文件的工具
1
wget [参数] [URL地址]
-
pwd: 命令用于显示当前目录
-
cp & mv & rm
1 2 3
cp -r sourse_file_path destinct_file_path // 复制文件夹及子文件到目标文件夹 mv -i 源文件或目录 目标文件或目录 // 文件移动或重命名 rm -rf direct/ // 删除文件夹或文件
-
服务器查看
1 2 3
查看硬盘使用情况:df -h(有时硬盘空间不够会导致服务器奔溃) 查看cpu的方法: cat /proc/cpuinfo 查看内存的方法: free -m 或者 cat /proc/meminfo
-
ls -al 等价于 ll
-
mkdir -p resources/views/articles // 递归创建文件夹
-
curl
-i: 输出时包括protocol头信息
-X: 指定请求method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# get curl -i -X GET http://127.0.0.1:9200 # post curl -i -X POST http://127.0.0.1:8888/user/login -H 'content-type: application/json' -d '{"username":"admin","password":"123456"}' # 保存二进制内容到文件 curl --location 'https://xxx/url/content' \ --header 'Content-Type: application/json' \ --data '{ "url": "https://i2.sinaimg.cn/travel/ul/2010/0102/U3325P704DT20100102104850.jpg" }' --output 111.png # 安装命令 apk add curl # 查ip/查IP地址:查询当前服务器ip curl cip.cc curl -L ip.tool.lu # 查看请求某个链接的响应时长 curl -o /dev/null -s -w %{http_code}---%{content_type}---%{time_namelookup}---%{time_namelookup}---%{time_connect}---%{time_starttransfer}---%{time_total}---%{speed_download}"\n" "https://www.baidu.com"
-
more/less
more功能类似 cat,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按 键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
crontab
|
|
在以上各个字段中,还可以使用以下特殊字符:
- 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
整点必触发,如设定*/35,则触发时间点为 *:00, *:35
- 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
- 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
- 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
重定向
- 命令 » 文件 2>&1 :以追加的方式,把正确输出和错误输出都保存在文件中。
- 命令 &> 文件名:以覆盖的方式将正确和错误输出都保存在文件中。
- 命令 &» 文件名:以追加的方式将正确和错误输出都保存在文件中。
- 命令 » 文件A 2» 文件B:正确的输出到A文件中,错误的输出到B文件中。
管道
命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象。
多命令顺序执行
- 命令1;命令2:执行完1再执行2,命令之间没有任何逻辑联系
- 命令1&&命令2:&&是一个“自私”符号,即命令1正确我命令2才执行,你错误了我2就不执行。
- 命令1||命令2:是一个备胎符号,即1不行了2就上,1行的话我就不执行。
常用文本处理命令
- awk是一个非常棒的数字处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理。运行效率高,而且代码简单,对格式化的文本处理能力超强。先来一个例子:
- sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
脚本后端挂起方式
-
&
当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &
command » out.file 2>&1 & # 脚本输出日志保存到文件
-
GNU Screen
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。
GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。
多窗口
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。
会话共享
Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
常用 screen 参数
1 2 3 4 5
screen -S yourname # 新建一个叫yourname的session,并进入这个session screen -ls # 列出当前所有的session screen -r yourname # 回到yourname这个session screen -d yourname # 远程detach某个session(挂起session,切换到后台) screen -d -r yourname # 结束当前session并回到yournamed这个session
删除创建的screen session:
- 在screen session中执行exit
- 有时远程的进程没有响应,用screen -r过去也不能杀掉,这是想把会话中止,方法如下: screen -S some_name -X quit
快捷键
Ctrl-a键 d键 -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
rsync
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
使用 Git 和 rsync 更新生产环境代码的 ssh 脚本
|
|
用户和用户组
- /etc/passwd: 存放用户信息
- /etc/shadow: 存放用户加密信息
- /etc/group: 存放用户组信息
- /etc/gshadow: 存放用户组加密信息
回车和换行
- 在linux/mac下,回车是\r,代表结束的意思。换行是\n,代表换行的意思。
- 在windows下,一般换行就是指回车+换行两种意思,即\r\n。
软件包管理器
- yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
kill vs pkill
kill [参数] [进程id]
kill:杀死单个进程
pkill: 看到pkill想到了什么?没错pgrep和kill!pkill=pgrep+kill。
下面是常用的信号:
- HUP 1 终端断线
- INT 2 中断(同 Ctrl + C)
- QUIT 3 退出(同 Ctrl + \)
- TERM 15 终止
- KILL 9 强制终止
- CONT 18 继续(与STOP相反, fg/bg命令)
- STOP 19 暂停(同 Ctrl + Z)
|
|
shell
&
& 放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&‘实现这个目的。
|
|
&&
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 ? 中。当?中。当? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。
command1 && command2 [&& command3 …]
- 命令之间使用 && 连接,实现 逻辑与的功能。
- 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
- 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
||
command1 || command2 [|| command3 …]
1 命令之间使用 || 连接,实现 逻辑或的功能。 2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。 3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。
;
command1; command2 [; command3 …]
分号是指无论前面的命令是否执行成功,都继续继续下一条命令。(等价于直接换行,变多条命令)
\
换行符,一行命令过长时建议换行