Linux高级编程 15
学习笔记
其他命令
who命令
查看当前在线上的用户情况。所有的选项都是可选的,
不使用任何选项时,who命令将显示一下三个内容
login name: 登录用户名
terminal line:使用终端设备
login time:登录到系统的时间
$who
ubuntu :0 2021-12-04 17:23 (:0)
ubuntu pts/4 2021-12-04 17:28 (:0)
切换到root
$su root
Password:
$who
ubuntu :0 2021-12-04 17:23 (:0)
ubuntu pts/4 2021-12-04 17:28 (:0)
whoami 命令
查看用户所
ps aux |grep 过滤内容
8.3 jobs
用来显示当前shell下正在运行哪些作业(即后台作业)
$cat
hello
hello
$cat & //取地址符表示在后台运行cat命令
[3] 3374
$jobs
[1] Stopped cat
[2]- Stopped cat
[3]+ Stopped cat
其中 1 2 3 表示作业号
fg [job...]
把指定的后台作业或挂起作业移到前台运行。
参数job是一个或多个的进程ID PID,或者是命令名称
或者是作业号(作业号前要加%)
bg [job...]
把被挂起的进程提到后台执行。其中,job是一个或多个进程的PID,
命令名称或者作业号(作业号前要加%)
ctrl + z
挂起当前进程
发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程,而并
非结束进程,用户可以使用使用fg/bg操作恢复执行前台或后台的进程。fg命令在前台恢复执行被挂起的进
程,此时可以使用ctrl-z再次挂起该进程,bg命令在后台恢复执行被挂起的进程,而此时将无法使用ctrl-z
再次挂起该进程
ctrl+c
重新执行
发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行;
vim /etc/passwd
messagebus:x:102:105::/var/run/dbus:/bin/false
用户名:密码:UID:GID:用户说明:家目录:解释器
kill 命令
kill 进程ID
Linux kill 命令用于删除执行中的程序或工作。
kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。
若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。
$ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.0 34040 3340 ? Ss 17:20 0:05 /sbin/init
kill -l
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。
命令格式:
kill[参数][进程号]
发送指定的信号到相应进程。
1.发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。
2.如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,
彻底杀死进程
命令:
kill –9 PID
kill -9 $(ps -ef | grep 进程名)
在bash中,$( )与` `(反引号)都是用来作命令替换的。
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,
然后将其结果替换出来,再重组成新的命令行。
env命令
查看环境变量
$echo $SHELL
/bin/bash
其中SHELL表示环境变量,$符表示吧环境变量取出来
$env
XDG_VTNR=7
XDG_SESSION_ID=c2
CLUTTER_IM_MODULE=xim
SELINUX_INIT=YES
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ubuntu
SESSION=ubuntu
GPG_AGENT_INFO=/run/user/1000/keyring-AQKjzi/gpg:0:1
TERM=xterm
SHELL=/bin/bash
XDG_MENU_PREFIX=gnome-
VTE_VERSION=3409
WINDOWID=29360139
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/2458
GNOME_KEYRING_CONTROL=/run/user/1000/keyring-AQKjzi
GTK_MODULES=overlay-scrollbar:unity-gtk-module
USER=ubuntu
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/run/user/1000/keyring-AQKjzi/ssh
SESSION_MANAGER=local/ubuntu:@/tmp/.ICE-unix/2629,unix/ubuntu:/tmp/.ICE-unix/2629
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
DESKTOP_SESSION=ubuntu
QT_IM_MODULE=ibus
QT_QPA_PLATFORMTHEME=appmenu-qt5
JOB=dbus
PWD=/home/ubuntu
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_271/
XMODIFIERS=@im=ibus
GNOME_KEYRING_PID=2453
LANG=en_US.UTF-8
GDM_LANG=en_US
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
IM_CONFIG_PHASE=1
COMPIZ_CONFIG_PROFILE=ubuntu
GDMSESSION=ubuntu
SESSIONTYPE=gnome-session
XDG_SEAT=seat0
HOME=/home/ubuntu
SHLVL=1
LANGUAGE=en_US
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=ubuntu
COMPIZ_BIN_PATH=/usr/bin/
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/
QT4_IM_MODULE=xim
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-pC1s9gNJE4
LESSOPEN=| /usr/bin/lesspipe %s
INSTANCE=
TEXTDOMAIN=im-config
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0
XDG_CURRENT_DESKTOP=Unity
GTK_IM_MODULE=ibus
LESSCLOSE=/usr/bin/lesspipe %s %s
TEXTDOMAINDIR=/usr/share/locale/
COLORTERM=gnome-terminal
XAUTHORITY=/home/ubuntu/.Xauthority
_=/usr/bin/env
想直接看SHELL的环境变量的值
$env |grep SHELL
SHELL=/bin/bash
top 命令
文字版的任务管理器
$top
iB Swap: 0 total, 0 used, 0 free. 871036 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1465 root 20 0 325176 55876 18348 S 20.3 0.7 1:01.70 Xorg
3651 ubuntu 20 0 645328 19232 12804 S 6.5 0.2 0:10.02 gnome-ter+
2831 ubuntu 20 0 1096068 73664 38548 S 4.9 0.9 1:17.65 compiz
设置密码
sudo passwd 用户
$cd /home
$ls
conf fmc log root ubuntu update userspace wangwu
$sudo passwd ubuntu
[sudo] password for ubuntu:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
$sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
切换用户
sudo su 用户
注意linux学习不要经常是使用root用户
删除用户
userdel -r 用户名
-r表示主目录一起删除
$ls
conf fmc log root songweibin ubuntu update userspace
$sudo userdel -r songweibin
userdel: songweibin mail spool (/var/mail/songweibin) not found
$ls
conf fmc log root ubuntu update userspace
ifconfig
查看网卡信息
$ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:18:c6:94
inet addr:192.168.214.128 Bcast:192.168.214.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe18:c694/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2632 errors:0 dropped:0 overruns:0 frame:0
TX packets:1777 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:254642 (254.6 KB) TX bytes:190804 (190.8 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:204 errors:0 dropped:0 overruns:0 frame:0
TX packets:204 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:25438 (25.4 KB) TX bytes:25438 (25.4 KB)
ip地址为192.168.214.128
ping 命令
ping 主机名/ip地址
$ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39: icmp_seq=1 ttl=128 time=49.1 ms
64 bytes from 14.215.177.39: icmp_seq=2 ttl=128 time=22.1 ms
64 bytes from 14.215.177.39: icmp_seq=3 ttl=128 time=81.6 ms
64 bytes from 14.215.177.39: icmp_seq=4 ttl=128 time=22.3 ms
64 bytes from 14.215.177.39: icmp_seq=5 ttl=128 time=27.0 ms
man 命令
man man
1 Executable programs or shell commands //可执行文件和shell命令
2 System calls (functions provided by the kernel) //系统调用
3 Library calls (functions within program libraries) //库函数
4 Special files (usually found in /dev) //
5 File formats and conventions eg /etc/passwd //文件和规范
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
$man printf
输出 PRINTF(1) 中的1,代表可执行程序和shell命令,不是我们想查
的c语言的库函数
PRINTF(1) User Commands PRINTF(1)
NAME
printf - format and print data
查看c语言库函数
$man 3 printf
后面我们要学习的linux的系统调用
要用2(系统调用)
PRINTF(3) Linux Programmer's Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
我们一定要记住1 2 3各代表什么
注意:第五卷也挺有用的
比如老是记不住/etc/passwd 各个字段的含义
$passwd 5 passwd
PASSWD(5) File Formats and Conversions PASSWD(5)
NAME
passwd - the password file
DESCRIPTION
/etc/passwd contains one line for each user account, with seven fields delimited by colons (“:”). These fields are:
· login name
· optional encrypted password
· numerical user ID
· numerical group ID
· user name or comment field
· user home directory
· optional user command interpreter
总结下:
man 用户手册第一卷:shell命令 可执行文件
man 用户手册第二卷:系统调用
man 用户手册第三卷:库函数
man 用户手册第五卷:文件和规范
clear 清屏命令
也可以ctrl+ l 清屏
非常有用,再文字很多的且显示不完的时候,
,使用ctrl+l可以直接清屏
dos下是cln
alias 命令
别名
shell 解释器的命令都在bin目录下
$ls /bin
$ls /bin
bash bzless dbus-cleanup-sockets egrep gzexe lesspipe more ntfs-3g ntfsmftalloc pwd setupcon touch ypdomainname
bunzip2 bzmore dbus-daemon false gzip ln mount ntfs-3g.probe ntfsmove rbash sh true zcat
busybox cat dbus-uuidgen fgconsole hostname loadkeys mountpoint ntfs-3g.secaudit ntfstruncate readlink sh.distrib udevadm zcmp
bzcat chacl dd fgrep ip login mt ntfs-3g.usermap ntfswipe red sleep ulockmgr_server zdiff
bzcmp chgrp df findmnt kbd_mode loginctl mt-gnu ntfscat open rm ss umount zegrep
bzdiff chmod dir fmc_cldc_cli keyctl lowntfs-3g mv ntfsck openvt rmdir static-sh uname zfgrep
bzegrep chown dmesg fmc_cldc_srv kill ls nano ntfscluster pidof rnano stty uncompress zforce
bzexe chvt dnsdomainname fuser kmod lsblk nc ntfscmp ping running-in-container su unicode_start zgrep
bzfgrep cp domainname fusermount less lsmod nc.openbsd ntfsdump_logfile ping6 run-parts sync vdir zless
bzgrep cpio dumpkeys getfacl lessecho mkdir netcat ntfsfix plymouth sed tailf vmmouse_detect zmore
bzip2 dash echo grep lessfile mknod netstat ntfsinfo plymouth-upstart-bridge setfacl tar which znew
bzip2recover date ed gunzip lesskey mktemp
date命令:
查看当前时间:
$date
Sat Dec 4 19:16:39 CST 2021
查看别名
$alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias cman='man -M /usr/share/man/zh_CN'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
起别名:
$alias pg='ps aux |grep'
再次查看别名的信息:
$alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias cman='man -M /usr/share/man/zh_CN'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias pg='ps aux |grep'
从中可以发现中文的man手册的别名 cman
cman printf
PRINTF(1) FSF PRINTF(1)
NAME
printf - 格式化并显示数据
date 命令
显示系统时间
echo
echo 【-n】 字符串
在方括号内的表达式(“[” 和 “]”之间的字符)是可选的(写命令时要去掉括号)。
在尖括号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。
省略号表示该选项可以单个或多个
umask
指定用户创建文件时的掩码
掩码:白话来说就是屏蔽码
$pwd
/home/ubuntu/code/test
$ls
$touch file
$ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Dec 4 19:34 file
权限用数字表示的话664
全的时候应该是777
但是操作系统不认为新touch出来的文件具备执行能力
所以默认会把文件执行权限去掉
所以掩码为002
查看当前掩码确认下:
$umask
0002
002-> 775 (775+002 = 777)->系统不认为有执行权限 ->664
注意第一个0 表示八进制
修改掩码
umask 522
522 777 255 所以w- rx-rx
因为系统不认为有执行权限 还是w-r-r
$umask 522
$touch file2
$ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Dec 4 19:34 file
--w-r--r-- 1 ubuntu ubuntu 0 Dec 4 19:45 file2
创建终端
ctrl+ alt + t
在终端里面呼出 一个终端
ctrl+shift + t
多页之间的切换
alt+1 alt+2 ...
目的:linux程序员可以摒弃鼠标
本文介绍了Linux高级编程中的用户管理技巧,如who、whoami、ps、jobs、top、passwd、sudo、umask、man等实用命令的使用,以及密码设置、用户切换和删除、网络配置、进程控制和环境变量查看等内容。

被折叠的 条评论
为什么被折叠?



