本文是我常用到的命令,并不系统或全面,仅做记录以便查找

常用网站

  1. Oracle下载java: https://www.oracle.com/java/technologies/downloads/




装机必备软件:

通用

软件 软件 软件 软件 软件 软件
Anoconda(python3) java(jdk11+) aptitude(优秀的软件包管理器) mysql git wget
vim tar less(Termux支持vim触摸移动光标) nano ffmpeg clang
nodejs zip openssl-tool openssh curl net-tools
unzip unrar nmap nginx

Termux

软件 软件 软件 软件 软件 软件
less(Termux支持vim触摸移动光标) openssl-tool openssh




常用命令:

  • 实时读取文件(文件变化时会刷新滚动): tail -F 文件名tail -F -n 3 文件名(从倒数第三行开始实时读取文件)
  • linux创建用户并授予sudo权限
    1. 新建用户
    root@ubuntu:~# adduser hadoop
    root@ubuntu:~# passwd hadoop #为hadoop用户设置密码
    
    1. 为hadoop用户添加sudo权限
    root@ubuntu:~# sudo gedit /etc/sudoers
    
    1. 把root那行复制后改成hadoop,hadoop就有了sudo权限,需要sudo密码则为ALL,不需要则NOPASSWD:ALL。
    root      ALL=(ALL)       NOPASSWD:ALL
    hadoop    ALL=(ALL:ALL)   ALL
    
  • 切换用户:
    • 切换用户的命令为su username
    • 从普通用户切换到root用户: sudo su
    • 退回到原来用户(切换用户前的用户): 在终端输入exitlogout或使用快捷方式ctrl+d
  • 使用apt安装.deb文件/.deb包: sudo apt install ./mysql-apt-config_0.8.20-1_all.deb
  • 查看端口占用: netstat -nap | grep 80netstat -tunlp|grep 80 最后一列就是占用的程序PID,使用kill -9 PID杀死进程,或使用sudo lsof -i:80查询
  • 查看系统信息:
    • 查看系统内核信息: uname -a
    • 查看系统版本信息: cat /proc/version
    • 查看系统发行版信息: cat /etc/issuecat /etc/redhat-release
  • 搜索apt包: apt-cache search jdk
  • 干净卸载: apt-get --purge remove software_name,或apt purge software_name
  • 将内容覆盖写入文件: echo "hello,world" > test.txt
  • 将内容追加写入文件: echo "hello,world2" >> test.txt
  • 压缩/解压缩
    • 压缩目录为zip:
      • 将指定目录/tmp压缩成test.zip文件: zip -r test.zip tmb/

      • 压缩目录为zip命令: zip [参数] [打包后的文件名] [打包的目录路径]

        参数 说明
        -a 将文件转成ASCII模式
        -F 尝试修复损坏的压缩文件
        -h 显示帮助界面
        -m 将文件压缩之后,删除源文件
        -n 特定字符,不压缩具有特定字尾字符串的文件
        -o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
        -q 安静模式,在压缩的时候不显示指令的执行过程
        -r 将指定的目录下的所有子目录以及文件一起处理
        -S 包含系统文件和隐含文件(S是大写)
    • 解压缩zip中的文件:
      • 解压缩到当前目录: unzip pack.zip

      • 解压缩到指定目录(如果之前存在同名文件则覆盖): unzip -o pack.zip -d tmp/

      • 压缩目录为zip命令: zip [参数] [打包后的文件名] [打包的目录路径]

        参数 说明
        -n 解压缩时不要覆盖原有的文件;
        -o 不必先询问用户,unzip执行后覆盖原有的文件;
        -P [密码]使用zip的密码选项;
        -q 执行时不显示任何信息;
        -d [目录]指定文件解压缩后所要存储的目录;
    • zip:
      • 压缩: zip -r newfilename.zip filename
      • 解压缩: unzip filename.zip
      • 指定解压缩的路径: unzip filename.zip -d newdir
    • tar/tar.gz格式
      • 压缩方式: tar -zcvf newfilename.tar.gz filename
      • 解压缩到当前目录: tar -zxvf filename.tar.gz
      • 解压缩到指定目录: tar -zxvf filename.tar.gz -C /root/xxx
  • 使用命令行查看SQLite3文件:
    1. sudo apt install sqlite3
    2. Do you want to continue? [Y/n]: 'Y'
    3. sqlite3 db_file_name.sqlite3
    4. .mode column
    5. .headers on
    6. select * from website_statistics;
  • Nginx/nginx:
    • 测试Nginx配置文件: nginx -t
    • 指定配置文件启动Nginx: nginx -c /usr/local/nginx/conf/nginx.conf
    • 修改配置文件后重装载Nginx: nginx -s reload
    • 重启Nginx服务: service nginx restart
    • 正常停止或关闭Nginx: nginx -s quit
    • 快速停止或关闭Nginx: nginx -s stop
  • 查看MySQL状态,看是否已经启动: ps -e |grep mysqldservice mysqld status
  • log文件太大分割/文本文件分割:
    • 指定分割的行数: split -l 300 tomcat.log prefix(分割的新文件前缀)
    • 指定后的文件大小: split -b 10m server.log prefix(分割的新文件前缀)
  • 小文本文件合并: cat small_files* > large_file
  • 查看某个端口是否开放: lsof -i:80如果显示信息说明已开放
  • 后台运行的2种方法
    • 方法1: nohup 命令
    • 方法2: 在运行命令时使用 Ctrl + z 暂停命令的运行,然后使用 jobs 命令查看当前正在执行(刚刚暂停)的命令的状态,第一列就是的值就是命令的序号,然后 bg %1即可让1号在后台执行(),即可让刚刚暂停的命令继续在后台运行。比如运行的命令序号是1,执行bg %1即可让1号在后台执行(bg %好像可以让所有暂停的命令在后台运行)
  • 在两个Linux之间传输文件
    • 命令格式: scp [参数] [原路径] [目标路径]
    • 从远程拉取数据到本地(文件或文件夹均可): scp -r <远程的ip>:<要拉取的文件或目录路径> <要保存到本地的目录/路径>
    • 从本地推送数据到远程(文件或文件夹均可): scp -r <要推送的本地的目录/路径> fucaijin:<要保存的文件或目录路径>
    • 从远程拉取数据到本地demo: scp -r 192.168.0.152:/home/fucaijin/script_task/get_english_fiction/fiction.tar.gz /home/fucaijin/fiction,拉取完成后本地路径就有了:/home/fucaijin/fiction/fiction.tar.gz
    • 可以使用后台运行的第二种方法,让命令在后台执行
  • 在本地和远程Linux之间互传文件:
    • lrzsz: apt install lrzsz
    • 上传文件命令: rz
    • 下载文件命令: sz
  • python相关:
    • 安装pip: sudo apt-get install python3-pip
    • 修改pip源: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • 查看文件:
    • 查看文件所有内容: cat <文件名>
    • 查看文件末尾指定数量的行/查看文件末尾若干行/查看文件后n行: tail -n <行数> <文件名>
    • 查看文件首处指定数量的行/查看文件前若干行/查看文件前n行: head -n <行数> <文件名>
  • 重启: sudo reboot
  • 关机: halt
  • 查看文件数量
    • 查看当前目录内的的文件数量(不含子孙目录的文件): ls -l|grep "^-"| wc -l
    • 查看当前目录下的文件数量(含子孙目录的文件,R代表子目录) : ls -lR | grep "^-"| wc -lfind ./ -type f | wc -l
    • 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R: ls -l | grep "^d"| wc -l
    • 查看当前目录下的文件数量(含子孙目录的文件,R代表子目录) ls -lR | grep "^d"| wc -l
  • 访问网络curl localhost:8000curl localhost
  • 下载文件或下载访问的网页wget localhost:8000wget localhost

将软件注册为系统Systemctl启动项

在/etc/systemd/system目录下创建文件"XXX.service" (XXX是代表未来命令名字),并授权执行文件chmod +x或777 XXX.service

[Unit]
Description=Clash Study(关于此服务的描述)
After=network.target

[Service]
Type=simple
User=root(如果指定了用户,则只有该用户才能启动)
ExecStart=/opt/clash/clash(程序运行的路径)

[Install]
WantedBy=multi-user.target

重新加载 systemd 系统服务管理器的配置文件: sudo systemctl daemon-reload
测试启动服务: sudo systemctl start 服务名
查看服务状态: sudo systemctl status 服务名,如果Active值为active(running)则说明服务为运行状态,如果是inactive(dead)说明未运行
停止服务: sudo systemctl stop 服务名
设置开启或关闭开机自启动: sudo systemctl enable 服务名sudo systemctl disable 服务名
重启服务:systemctl restart 服务名
查看服务是否已启动:systemctl is-active 服务名
查看服务的状态:systemctl status 服务名
查看服务是否为开机自启动:systemctl is-enabled 服务名
只重启正在运行中的服务systemctl try-restart 服务名
显示所有的服务状态,空格翻页 q退出systemctl list-units --type service --all
查看启动成功的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
查看所有服务的状态,空格翻页 q退出:systemctl list-unit-files --type service




Debian

账户

  • 开启root用户: 首次使用root需要设置密码,在pi用户下执行 sudo passwd root 即可设置root密码,然后sudo vi /etc/ssh/sshd_config#PermitRootLogin …一行修改为PermitRootLogin yes并保存,设置完成后需要执行sudo reboot重启方可生效并能正常使用root账户

安装jdk11

  1. 检查是否安装了jdk:java -version
  2. 搜索jdk: apt-cache search openjdk
  3. 安装jdk: apt install openjdk-11-jdk或者apt install default-jdk
  4. 安装完成

安装MySQL

转跳我的安装过程: https://fucaijin.cn/archives/在debian中安装mysql
参考:

安装Nginx

  1. 搜索apt包: apt-cache search nginx
  2. apt install nginx-full
  3. 测试nginx是否已经安装成功几种方法:
    • 方法1: root登录然后输入命令ps -C nginx -o pid,如果pid有值,则说明安装成功,否则失败
    • 方法2: ps -ef | grep nginx
    • 方法3: 装上就会存在以下目录: cd /usr/local/nginx/sbin/nginx




Termux

使用电脑连接手机Termux

学习来源: https://www.jianshu.com/p/2e6c8152a2ba

  1. 在非root用户下安装openssh: apt install openssh
  2. 在电脑生成ssh公钥,在任意位置打开终端输入命令: ssh-keygen -t rsa,此时会在电脑的C:\Users\Administrator.ssh或C:\Users\用户.ssh文件夹中发现两个刚生成的文件id_rsa、id_rsa.pub
  3. 将公钥文件id_rsa.pub传输到手机上的这个位置(需要root才能打开/data/data路径): /data/data/com.termux/files/home/.ssh/id_rsa.pub
  4. 将公钥内容添加到ssh的授权文件里:
    cat /data/data/com.termux/files/home/.ssh/id_rsa.pub >> authorized_keys
  5. Termux执行: sshd开启ssh服务器
  6. 电脑执行: ssh 用户名@ip -p 8022,比如ssh root@192.168.123.81 -p 8022(Termux的openssh就是用的8022)
  7. 如果连接上了就到此结束。如果连接不上,可能是权限的问题,再接着往下操作。
  8. Termux执行: whoami,得到当前用户名比如是u0_a123
  9. Termux执行查看~路径下的.ssh文件的权限: cd ~ && ls -la
    在home文件夹下执行ls -ls,输出类似如下图:
    image.png
    如果.ssh的用户是第8步执行输出的用户名,且权限至少为rwx------(700)才正确,否则修改权限输入命令修改权限chmod 700 .sshsudo chmod 700 .ssh
  10. 然后再次从第5步开始操作即可




Respberry

  • 默认账号 密码: pi raspberry
  • root用户: 参考上面写的Debian.账号.开启root用户

Q.E.D.


做一个热爱生活的人