ubuntu入门
转自:https://blog.csdn.net/qintaiwu/article/details/73741976
Ubuntu18.04LTS 换源
作者:alango 来源:简书
链接:https://www.jianshu.com/p/97c35d569aa3
$ sudo vim /etc/apt/sources.list
修改该文件,将该文件中原来的内容全部删除,添加如下内容(此处以阿里源作为示例)
# 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
然后使用下面命令更新一下更新一下
$ sudo apt update && sudo apt upgrade
几份国内的其他源
清华源
# 清华源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
中科大源
# 中科大源 deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
163源
# 163源 deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
View Code
Linux下查找JDK默认安装路径
首先确认是否已按照JDK
java -version
然后查找java命令的位置
which java
查找java命令的位置所对于的软链地址
ls -l /usr/bin/java
最后通过软链地址查找JDK的安装目录
ls -l /etc/alternatives/java
常用权限
原文地址:https://blog.csdn.net/u014316462/article/details/52241685
444 r--r--r-- 600 rw------- 644 rw-r--r-- 666 rw-rw-rw- 700 rwx------ 744 rwxr--r-- 755 rwxr-xr-x 777 rwxrwxrwx
Ubuntu查看并修改主机名的方法
本文作者:ityanger
本文链接:https://www.cnblogs.com/lzyws739307453/p/12909717.html
查看系统正在运行的进程
ps afux
查看主机名
在终端窗口中
root@lzyws739307453:~ #例如这个的主机名就是lzyws739307453。
或在终端窗口中输入命令:hostname、hostnamectl、uname –n、uname -a等,均可以查看到当前主机的主机名。
临时修改主机名
hostname 新主机名
- 新主机名并不保存在系统中,重启系统后主机名将恢复为原先的主机名称。
- 终端不会立即显示生效后的主机名,重开一个终端窗口(通过ssh连接的终端需要重新连接才可以).
永久修改主机名
在Ubuntu系统中永久修改主机名只需要修改/etc/hostname文件就行了。
vim /etc/hostname
其中,在其它Linux发行版中,并非都存在/etc/hostname文件,其它的请自行搜索
apt-get软件管理工具
下面讲解,linux系统下如何进行软件的管理,包括软件的索引安装、更新、卸载删除、本地存储介中软件的安装、系统升级等操作。
Linux软件包按封装类型分为3类:
1、Debian,其文件扩展名为“.deb”
2、Red Hat, 其文件扩展名为“.rpm”
3、Tarball,其扩展名有“.tar.gz”、“.tar.bz2”或“TGZ”
Tarball是一种大量文件(类似zip文件)组成的单个档案大型文件集合,主要用于发布软件的源代码,用“tar”命令组合文件,用“gzip”命令压缩文件容量,解压时用“tar -xzf filename”命令解压,然后在执行安装操作。
软件仓库
软件仓库,顾名思义就是存放软件包的地方,指的是一个网站或者一个目录,Uvuntu Linux系统下通过特定的命令就能完成软件包的索引、软件的更新、安装等操作,固定的仓库使得软件更为规范,安装操作步骤更为简单,不类似Windows下的软件,极为散乱,存在各种不安全性。
主要的软件仓库有:Main、Restricted、Universe、Multiverse这4个。
软件包的依赖关系
故名思意,下载的一个软件包时,需要依赖(从程序角度来说,这就是调用)别的软件或者某些函数来实现这个软件的功能。
apt-get命令维护软件时,会自动识别并下载相应的依赖软件。
软件维护操作
安装软件【提示】使用该命令安装软件时系统会自动安装存在依赖关系的软件包,以保证软件正常运行。
sudo apt-get install XXXX
安装指定版本的软件
参考地址:https://www.jianshu.com/p/87cccdab2d1f
apt-cache madison nginx # 查询仓库中软件的所有版本
apt-cache show nginx | grep -i version # 查看软件版本
apt-get -y install nginx=1.14.2-1~xenial #安装指定指定版本
更新软件
sudo apt-get update #跟新软件源索引
sudo apt-get upgrade XXXX #将软件升级到最新版本
卸载软件
sudo apt-get remove XXXX #卸载软件(删除软件包)
sudo apt-get autoremove XXXX #自动卸载软件但保留其配置文件
sudo apt-get autoremove --purge XXXX #自动卸载软件其删除其配置文件
【提示】1)一般用于卸载本地安装的软件,2/3)一般用于在线安装的软件
重装同一软件
sudo apt-get --reinstall install XXXX
Ubuntu系统清理
sudo apt-get -f install
sudo apt-get clean # 安装包全部卸载
sudo apt-get autoremove # 卸载软件时残留在系统里的垃圾咯。卸载这些孤立包的命令为
uname –r,然后看其显示的内核版本是多少。
补充:系统是如何知道软件源的呢?
原因是系统/etc/apt/sources.list配置文件定义了软件的发行源。
Linux 下后台运行程序,查看和关闭后台运行程序
原文地址:https://blog.csdn.net/u013846293/article/details/74003051/
1、运行.sh文件
直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。
(1)&命令
功能:加在一个命令的最后,可以把这个命令放在后台执行
(2)nohup命令
功能:不挂断的运行命令

2、查看当前后台运行的命令
有两个命令可以用,jobs和ps,区别是jobs用于查看当前终端后台运行的任务,换了终端就看不到了。而ps命令用于查看瞬间进程的动态,可以看到别的终端运行的后台进程。
(1)jobs命令
功能:查看当前终端后台运行的任务

jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。
(2)ps命令
功能:查看当前的所有进程

ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
3、关闭当前后台运行的命令
kill命令:结束进程
(1)通过jobs命令查看jobnum,然后执行 kill %jobnum
(2)通过ps命令查看进程号PID,然后执行 kill %PID
如果是前台进程的话,直接执行 Ctrl+c 就可以终止了
4、前后台进程的切换与控制
(1)fg命令
功能:将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。
(2)Ctrl + z 命令
功能:将一个正在前台执行的命令放到后台,并且处于暂停状态
(3)bg命令
功能:将一个在后台暂停的命令,变成在后台继续执行
如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。
Ubuntu系统命令
查看系统信息
cat /etc/*release
查看文件大小
ls -ll :以字节B的形式查看文件大小 ls -lh:以直观的形式查看所有文件大小 du -sh: 查看当前文件的总大小
U盘安装
1、启动盘制作
Rufus:https://rufus.akeo.ie/
查看进程端口号占用
sudo netstat -tunpl | grep 8000
查看进程ID
~$ sudo ps -ef | grep supervisor root 26099 1 0 11:24 ? 00:00:00 /usr/bin/python2 /usr/local/bin/supervisord -c /etc/supervisord.conf zd 28793 28369 0 11:26 pts/2 00:00:00 grep --color=auto supervisor

查看系统服务列表
service --status-all
Ubuntu下如何检查文件的md5,sha-512码
ubuntu自带程序md5sum,sha512sum
md5sum filename
sha512sum filename
Linux下格式化u盘
原文地址:https://segmentfault.com/a/1190000016491615?utm_source=coffeephp.com
windows下格式化u盘很简单,要么直接右键格式化,要么进入硬盘分区去格式化。那么Linux下呢?
其实Linux下格式化u盘也十分简单,只需要几条命令就可以了:
查看磁盘情况
sudo fdisk -l
可以看到有一个/dev/sdb的磁盘就是我们插入的u盘了,大小为28.8GB,类型为NTFS。
删除分区
sudo fdisk /dev/sdb
m # 获取帮助命令
d # 删除分区
n # 新建分区
p # 打印分区表
w # 写入分区表并退出
一定要记得最后的w命令。
格式化分区
格式化分区只需要使用mkfs.+(format)命令,例如格式化为fat格式,则在终端输入以下命令:
sudo mkfs.vfat -L labelname /dev/sdb1
# -L命令是可选,为你的u盘重新命名
# 最后的/dev/sdb1一定要是设备名
在windows下,我们常用的格式是ntfs,但是Linux默认是不支持ntfs格式的,所以我们需要安装另一个包NTFS-3G):
sudo pacman -S ntfs-3g
sudo mkfs.ntfs -Q -L labelname /dev/sdb1
现在我们就将u盘格式化为ntfs格式了,可以轻松的在windows下使用了。
日志篇
journalctl用法:
查看所有日志(默认情况下 ,只保存本次启动的日志): journalctl
查看内核日志(不显示应用日志): journalctl -k
查看系统本次启动的日志: journalctl -b
查看上一次启动的日志(需更改设置):
在该[Journal]部分下,将该Storage=选项设置为“persistent”以启用持久记录:
# vim /etc/systemd/journald.conf . . . [Journal] Storage=persistent
追踪日志
要主动追踪当前正在编写的日志,大家可以使用-f标记。同样功能类似为tail -f,只要不终止,会一直监控
journalctl -f
也许最有用的过滤方式是你感兴趣的单位。我们可以使用这个-u选项来过滤我们可以使用这个-u选项来过滤
journalctl -u
所以我们最终使用的命令是:
journalctl -f -u kubelet!
针对网桥进行抓包
查看本机IP路由,默认路由为ens33
$ ip route default via 192.168.1.1 dev ens33 proto static metric 100
开启抓包
$ sudo tcpdump -i ens33 -n icmp
打开另一个终端
ping -c 3 www.baidu.com
查看抓包结果
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 14:15:09.957603 IP 192.168.1.252 > 220.181.38.150: ICMP echo request, id 32976, seq 1, length 64 14:15:09.965551 IP 220.181.38.150 > 192.168.1.252: ICMP echo reply, id 32976, seq 1, length 64 14:15:10.958922 IP 192.168.1.252 > 220.181.38.150: ICMP echo request, id 32976, seq 2, length 64 14:15:10.966989 IP 220.181.38.150 > 192.168.1.252: ICMP echo reply, id 32976, seq 2, length 64 14:15:11.959651 IP 192.168.1.252 > 220.181.38.150: ICMP echo request, id 32976, seq 3, length 64 14:15:11.967831 IP 220.181.38.150 > 192.168.1.252: ICMP echo reply, id 32976, seq 3, length 64
Linux系统有时候需要测试某个端口的连通性
方法一、telnet法
telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式:
telnet ip port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
方法二、ssh法
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通性,具体用法格式如下:
用法: ssh -v -p port username@ip
说明:
-v 调试模式(会打印日志).
-p 指定端口
username:远程主机的登录用户
ip:远程主机
方法三、curl法
curl是利用URL语法在命令行方式下工作的开源文件传输工具。也可以用来测试端口的连通性,具体用法:
curl ip:port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。
方法四、wget方法
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是“World Wide Web”与“get”的结合,它也可以用来测试端口的连通性具体用法:
wget ip:port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机不存在端口则会一直提示连接主机。
Linux最大文件打开数
介绍
在Linux下有时会遇到Socket/File : Can't open so many files的问题。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
1.查看方法
使用ulimit -a 或者 ulimit -n
open files (-n) 1024 是linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量)
这里只是对用户级别的限制,其实还有个是对系统的总限制,查看系统总限制:
cat /proc/sys/fs/file-max
man proc,可得到file-max的描述:
/proc/sys/fs/file-max
This file defines a system-wide limit on the number of open files for all processes. (See
also setrlimit(2), which can be used by a process to set the per-process limit,
RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages
about running out of file handles, try increasing this value:
即file-max是设置系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。
也就是说,这项参数是系统级别的。
2.修改方法
临时生效:
ulimit -n # 查看open file限制 ulimit -Sn # 查看open file(soft)限制 ulimit -Hn # 查看open file(hard)限制 ulimit -SHn 10000 # 同时修改软限制和硬限制
ulimit 是一个 shell(这里使用的是 bash) 内置命令 ,其实ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,如果运行ulimit 命令修改时没有加上-H或-S,就是两个参数一起改变。
软限制和硬限制的区别?
硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。
永久生效
要想ulimits 的数值永久生效,必须修改配置文件/etc/security/limits.conf
在该配置文件中添加
* hard nofile 65535
echo "* soft nofile 65535" >> /etc/security/limits.conf echo "* hard nofile 65535" >> /etc/security/limits.conf
* 表示所用的用户
修改系统总限制
其实上的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。
假如,我们设置进程打开的文件句柄数是1024 ,但是系统总线制才500,所以所有进程最多能打开文件句柄数量500。从这里我们可以看出只设置进程的打开文件句柄的数量是不行的。所以需要修改系统的总限制才可以。
echo 6553560 > /proc/sys/fs/file-max
上面是临时生效方法,重启机器后会失效;
永久生效方法
修改 /etc/sysctl.conf, 加入
fs.file-max = 6553560 重启生效
open file(s) 上限
回到遇到的问题中来:服务打开 80 万个左右的文件句柄就不能再打开了。所以, 尝试将 ulimit 设置为 1000 万,结果提示出错:
# ulimit -n 10000000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
注意,使用的可以 root 用户,居然没有权限,然后尝试降低到:
- 500 万,依然错误
- 300 万,依然错误
- 200 万,依然错误
- 100 万,成功了
显然,这里有一个上限,大概在 100-200 万之间。
所以,解决问题的办法,在于怎样提高这个上限!
通过一番搜索,发现 open file(s) kernel 级别有 2 个配置,分别是:
fs.nr_open,进程级别
fs.file-max,系统级别
fs.nr_open 默认设置的上限是 1048576,所以用户的 open file(s) 不可能超过这个上限。
# sysctl -w fs.nr_open=10000000 # ulimit -n 10000000 # ulimit -n 10000000
修改后即可设置更大的 open file(s) 了。
同样,对于 kernel 参数的修改,sysctl 命令修改的是当前运行时,如果需要永久修改, 则将配置添加到 /etc/sysctl.conf 中,例如:
# echo "fs.nr_open = 10000000" >> /etc/sysctl.conf # echo "fs.file-max = 11000000" >> /etc/sysctl.conf
注意:fs.nr_open 总是应该小于等于 fs.file-max。
如果要查看当前打开的文件数,使用下面的命令:
# sysctl fs.file-nr fs.file-nr = 1760 0 11000000
不过,增大这些值意味着能够打开更多的文件(在 Linux 中,everything is file,包括 socket),但是同时也意味着消耗更多的资源,所以基本上在物理机上才会遇到这种问题。
$ more /etc/security/limits.conf | grep oracle oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 $ more /etc/pam.d/login | grep pam_limits session required pam_limits.so
查看进程号及其limit值
修改/etc/security/limits.conf文件里的最大文件打开数和最大进程数没有生效
仔细查看/etc/security/limits.conf文件的注释,说明了对系统服务不生效

解决办法
DefaultLimitNOFILE=65536 DefaultLimitNPROC=32000 DefaultLimitMEMLOCK=infinity
问题汇总
避免’sudo echo x >’ 时’Permission denied’
示例
sudo echo a > 1.txt -bash: 1.txt: Permission denied
这是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,
但是没有让 “>” 命令也具有root 权限,所以 bash 会认为这个命令没有写入信息的权限。
丙: 解决办法。三种:
1、利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
sudo sh -c "echo a > 1.txt"
利用bash -c 也是一样的,现在bash shell 流行。
2、利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:
echo a |sudo tee 1.txt echo a |sudo tee -a 1.txt // -a 是追加的意思,等同于 >>
tee 命令很好用,它从管道接受信息,一边向屏幕输出,一边向文件写入。
linux 总是有一些小工具为我们考虑的很贴切!
3、提升shell 权限。
sudo -s # 提到root 权限 sudo su username //退回到username权限,提示符为$ exit 退出当前用户,回到上一层目录. centos 提升权限: su -
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
第一种方法,我们只需要杀死之前的进程,释放系统锁就可以了:
ps -e|grep apt-get
sudo kill pid
第二种方法,强制解锁
sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
no version information available
最近在编译时,发现一个错误:
/usr/lib/libcrypto.so.1.0.0: no version information available (required by /usr/sbin
上网搜索了一番,没找到解决办法。到/usr/lib下ll一下,有两个文件:
libcrypto.so
libcrypto.so.1.0.0
正常。怎么大小一样?后者应该是个link才对。
怎么办?直接把后者删除。然后错误消失。
如果删除提示没有怎么办?那使用ln再产生一个链接就是。
参考地址:
怎样增大 Linux 系统的 open file(s) 上限 : http://www.chengweiyang.cn/2015/11/14/how-to-enlarge-linux-open-files-upper-cell/
Linux限制打开文件数量:https://www.jianshu.com/p/ad2754432a4b

浙公网安备 33010602011771号