Option -m (gnu df only). Display disk space usage only in MB
To view file system disk space usage only in Megabytes, use -m flag.
$ df -m Filesystem 1M-blocks Used Available Use% Mounted on ... ... ...
Option -T (gnu df only). Display the file system type
To display the file system type, use -T flag.
$ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on ... ... ...
As you see, there is an extra column (second from left) that shows the file system type.
Option -t (gnu df only). Display only the specific file system type
We can limit the listing to a certain file systems. for example ext4. To do so, we use -t flag.
$ df -t ext4 Filesystem 1K-blocks Used Available Use% Mounted on ... ... ..
See? This command shows only the ext4 file system disk space usage.
Option -x (gnu df only). Exclude specific file system type
Some times, you may want to exclude a specific file system from the result. This can be achieved by using -x flag.
$ df -x ext3 Filesystem 1K-blocks Used Available Use% Mounted on ... ... ...
Option -h (gnu df only). Display filesystem for a given folder
To display partition on which a partcilar folder exist and staticitcs for this partition , use option -h. Often it make sense to combine it with -T.
$ df -hT /home/sk/ Filesystem Type Size Used Avail Use% Mounted on ... ... ..
Grepping the interesting filesystems from the output.
Often you need a subset of all filesystems, for example just Oracle file systems. Common convention is that Oracle filesystems begin with /u0. In this case you need to take into consideration that filesystem is the last field and anchor your regular expression to the end of the line. Otherwise you might get false positives.
For example:
# df -kP | egrep "/u0$" /dev/vx/dsk/oradg/u02vol 12582912 8717924 3744252 70% /u02 /dev/vx/dsk/oradg/u01vol 8796160 5563610 3131556 64% /u01 /dev/vx/dsk/oradg/u04vol 10035200 1247888 8519534 13% /u04 /dev/vx/dsk/oradg/u03vol 12582912 2524060 9744542 21% /u03
We can use cut, Perl of awk to extract the fourth column, which is the available space in the filesystem.
$ df -kP | egrep "/u0$" | awk '{ print $4 }'
3744252 3132546 8519534 9744542
Writing scripts top monitor free space on filesystems
It is actually pretty difficult to create a good script for monitoring free space of filesystems. For some considerations see Filesystem free space monitoring
Here is a simple way too primitive example:
check_filesystem_size.ksh
#!/bin/kshfor i in `df -k | grep /u0 `
do
# If any filesystem has less than 100k, issue an alertfreespace=echo $i | awk '{ print $4 }'
if [ $freespace -lt 100 ]
then
mail -s "On server $HOSTNAME filesystem $i has less then 100K of free space ($freespace)" [email protected] < df -k | grep "/u0"
fi
done
We can execute this script each 10 minutes from crontab (Linux cron capability to specify increment is used):
#****************************************************************
# Filesystem free space below 100K alert
#****************************************************************
1/10 * * * * /home/oracle/check_filesystem_size.ksh > dev/null >&1
|
Switchboard | ||||
Latest | |||||
Past week | |||||
Past month |
NEWS CONTENTS
- 20190406 : How To Count Inode Usage In Linux ( Apr 06, 2019 , www.2daygeek.com )
- 20190212* How to Check Disk Space in Linux Using the df Command - ( Feb 09, 2019 , linuxize.com ) [Recommended]
- 20131205 : Disk usage analysis and cleanup tools by Mayank Sharma ( 01 February 2006 , linux.com )
- 20100314 : A System Monitoring Tool Primer ( CertCities.com )
Old News
[Apr 06, 2019] How To Count Inode Usage In Linux
Apr 06, 2019 | www.2daygeek.com
Each file has an inode containing metadata about the file. Each file in a filesystem has a unique inode number. Inode numbers are guaranteed to be unique only within a filesystem.
You may get the following error when inode is full on the file system. No space left on device or running out of Inodes.
Inode stores the following information about a file.
- Size of the file.
- Device ID
- User ID (UID)
- Group ID (GID)
- Information about permissions (read, write, execute, etc)
- File access privileges (owner, group and others)
- Time stamps information such as file access, file modification, file deletion and inode number change.
- Information about soft links and hard links
- Location of the file on the file system
How To Check Inode Number Of The File In Linux?Use the ls command with
-i
option to view the file inode number. The inode number of the file will be shown in the first field of the output.# ls -li 2daygeek.txt 1740436 -rw-r--r-- 1 daygeek daygeek 211 Feb 10 08:03 2daygeek.txtHow To Search A File Using Inode Number In Linux?You can able to find the files using inode number in Linux. To do so, use the following format.
# find /home/daygeek/ -inum 1740436 /home/daygeek/2daygeek.txtHow To Check Inode Utilization On The File System In Linux?If you would like to check inode utilization on the file system then run the following command.
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vda1 13640832 1487624 12153208 11% / devtmpfs 232604 326 232278 1% /dev tmpfs 235277 1 235276 1% /dev/shm tmpfs 235277 555 234722 1% /run tmpfs 235277 16 235261 1% /sys/fs/cgroup /dev/loop0 146592 139 146453 1% /tmp tmpfs 235277 1 235276 1% /run/user/0How To Count Inode Usage In Linux?If you would like to count inode utilization in the current directory, use the following command. This will print the output without grand total.
# pwd /home/daygeek # find . -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c | sort -rn 43113 ./.cache 16491 ./.rustup 4057 ./.mozilla 3257 ./Documents 3054 ./.local 1869 ./.config 1567 ./.npm 1551 ./Videos 964 ./.cargo 249 ./Pictures 185 ./Downloads 177 ./.bundle 158 ./yay 155 ./Desktop 145 ./snap 139 ./batstatHow To Count Inode Usage In Linux With Grand Total?If you would like to count inode utilization in the current directory, use the following command. This will print the output with grand total.
# echo "Detailed Inode usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n" Detailed Inode usage for: /home/daygeek 11 - 2g 46 - bash-insulter 140 - batstat 96 - betty 178 - .bundle 43114 - .cache 965 - .cargo 1870 - .config 156 - Desktop 3258 - Documents 186 - Downloads 60 - drivesync 3055 - .local 4058 - .mozilla 1568 - .npm 250 - Pictures 16492 - .rustup 146 - snap 64 - ssh-audit 1552 - Videos 159 - yay Total: 77682How To Check Inode Changes With Copy And Move?Inode values doesn't get change/modify when you perform the file move with in the file system. See the results below.
# ls -li /home/daygeek/2daygeek.txt 1740436 -rw-r--r-- 1 daygeek daygeek 211 Feb 10 08:03 /home/daygeek/2daygeek.txt # mv /home/daygeek/2daygeek.txt /home/daygeek/Downloads/ # ls -li /home/daygeek/Downloads/2daygeek.txt 1740436 -rw-r--r-- 1 daygeek daygeek 211 Feb 10 08:03 /home/daygeek/Downloads/2daygeek.txtInode values get changed/modified when you perform the file copy in Linux. See the results below.
# ls -li /home/daygeek/Downloads/2daygeek.txt 1740436 -rw-r--r-- 1 daygeek daygeek 211 Feb 10 08:03 /home/daygeek/Downloads/2daygeek.txt # cp /home/daygeek/Downloads/2daygeek.txt /home/daygeek/Downloads/2daygeek-new.txt # ls -li /home/daygeek/Downloads/2daygeek-new.txt 1743316 -rw-r--r-- 1 daygeek daygeek 211 Apr 5 09:51 /home/daygeek/Downloads/2daygeek-new.txtHow To Reduce The Inode Usage In Linux?The only option is to delete the unused files to reduce the inode usage in Linux.
[Feb 12, 2019] How to Check Disk Space in Linux Using the df Command -
Highly recommended!
Feb 09, 2019 | linuxize.com
... ... ...
To display file system types, use the
df
command followed the-T
option:https://tpc.googlesyndication.com/safeframe/1-0-32/html/container.html
df -tCopyFilesystem Type 1K-blocks Used Available Use% Mounted on dev devtmpfs 8172848 0 8172848 0% /dev run tmpfs 8218640 1744 8216896 1% /run /dev/nvme0n1p3 ext4 222284728 183666100 27257444 88% / tmpfs tmpfs 8218640 383076 7835564 5% /dev/shm tmpfs tmpfs 8218640 0 8218640 0% /sys/fs/cgroup tmpfs tmpfs 8218640 24 8218616 1% /tmp /dev/nvme0n1p1 vfat 523248 107912 415336 21% /boot /dev/sda1 ext4 480588496 172832632 283320260 38% /data tmpfs tmpfs 1643728 40 1643688 1% /run/user/1000CopyIf you want to limit listing to file systems of a specific type use the
-t
option followed by the type. For example to list all ext4 partitions you would run:df -t ext4CopyFilesystem 1K-blocks Used Available Use% Mounted on /dev/nvme0n1p3 222284728 183666112 27257432 88% / /dev/sda1 480588496 172832632 283320260 38% /dataCopySimilar to above, the
Display Inode Usage-x
option allows you to limit the output to file systems that are not of a specific type,When used with the
-i
option the df command will display information about the filesystem inodes usage. For example to show information about the inodes on the file system mounted to system root directory/
in human-readable format you would use:df -ih /CopyFilesystem Inodes IUsed IFree IUse% Mounted on /dev/nvme0n1p3 14M 1.9M 12M 14% /CopyAn inode is a data structure in a Unix and Linux file systems, which contains information about a file or directory such as its size, owner, device node, socket, pipe, etc., except da. Output format
The
df
command also allows you to specify the output format.To limit the reported fields shown in the df output use the
--output[=FIELD_LIST]
option.FIELD_LIST
is a comma-separated list of columns to be included in the output. Each field can be used only once. Valid field names are:https://tpc.googlesyndication.com/safeframe/1-0-32/html/container.html
source
- The File system source.fstype
- The File system type.itotal
- Total number of inodes.iused
- Number of the used inodes.iavail
- Number of the available inodes.ipcent
- Percentage of used inodes.size
- Total disk space.used
- Used disk space.avail
- Available disk space.pcent
- Percentage of used space.file
- The file name if specified on the command line.target
- The mount point.For example to display the output of all ext4 partition in human-readable format, showing only the filesystem name and size and the percentage of the used space you would use:
df -h -t ext4 --output=source,size,pcentCopyFilesystem Size Use% /dev/nvme0n1p3 212G 88% /dev/sda1 459G 38%Copy ConclusionBy now you should have a good understanding of how to use the
diskdf
command. You can always view all availabledf
command options by typingman df
in your terminal.
[Dec 05, 2013] Disk usage analysis and cleanup tools By Mayank Sharma
01 February 2006 | linux.com
The df utility displays the disk space usage on all mounted filesystems. The -T option prints the filesystem type as well. By default, df measures the size in 1K blocks, which could be a little difficult for a desktop user to decipher. Use the -h option to get more understandable output:
$ df -h -TFilesystem Type Size Used Avail Use% Mounted on/dev/hda6 ext3 20G 9.3G 9.1G 51% //dev/hda7 reiserfs 13G 2.1G 11G 17% /mnt/suse/dev/sda1 vfat 241M 152M 90M 63% /media/usbdisk
[Mar 14, 2010] A System Monitoring Tool Primer
CertCities.com
Checking Disk Performance and Disk Usage
Linux comes with the /sbin/hdparm program that can be used to control IDE or ATAPI hard drives that are common on most PCs. One feature of the hdparm program is to use the -t option to determine the rate at which data is read from the disk into a buffer in memory. For example, here's the result of typing /sbin/hdparm -t /dev/hda on one system:
/dev/hda:/dev/hda: Timing buffered disk reads: 178 MB in 3.03 seconds = 58.81 MB/secThe command requires the IDE drive's device name (/dev/hda for the first hard drive and /dev/hdb for the second hard drive) as an argument. If you have an IDE hard drive, you can try this command to see how fast data is read from your system's disk drive.
To display the space available in the currently mounted file systems, use the df command. If you want a more readable output from df, type the following command:df -hHere's a typical output from this command:Filesystem Size Used Avail Use% Mounted on /dev/hda5 7.1G 3.9G 2.9G 59% / /dev/hda3 99M 18M 77M 19% /boot none 125M 0 125M 0% /dev/shm /dev/scd0 2.6G 2.6G 0 100% /media/cdrecorderAs As this example shows, the -h option causes the df command to show the sizes in gigabytes (G) and megabytes (M).To check the disk space being used by a specific directory, use the du command and specify the -h option to view the output in kilobytes (K) and megabytes (M), as shown in the following example:
du -h /var/log
Here's a typical output of that command:
152K /var/log/cups 4.0K /var/log/vbox 4.0K /var/log/httpd 508K /var/log/gdm 4.0K /var/log/samba 8.0K /var/log/mail 4.0K /var/log/news/OLD 8.0K /var/log/news 4.0K /var/log/squid 2.2M /var/logThe du command displays the disk space used by each directory, and the last line shows the total disk space used by that directory. If you want to see only the total space used by a directory, use the -s option. For example, type du -sh /home to see the space used by the /home directory. The command produces an output that looks like this:89M
Recommended Links
- df (Unix) - Wikipedia, the free encyclopedia
- The df Command Tutorial With Examples For Beginners - OSTechNix
df
: report free disk space – Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group- The DF Command | Linux Journal
- Why command df and du reports different output-
- How to use the df command, by The Linux Information Project
Perl
GNU df reference
df displays the amount of disk space available on the file system containing each file name argument. If no file name is given, the space available on all currently mounted file systems is shown. Disk space is shown in 1K blocks by default, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used.If an argument is the absolute file name of a disk device node containing a mounted file system, df shows the space available on that file system rather than on the file system containing the device node (which is always the root file system). This version of df cannot show the space available on unmounted file systems, because on most kinds of systems doing so requires very nonportable intimate knowledge of file system structures.
GNU df options
Show information about the file system on which each FILE resides, or all file systems by default.
Mandatory arguments to long options are mandatory for short options too.
df reports the amount of disk space used and available on file systems. Synopsis:
df [option]... [file]...
With no arguments, df reports the space used and available on all currently mounted file systems (of all types). Otherwise, df reports on the file system containing each argument file.
Normally the disk space is printed in units of 1024 bytes, but this can be overridden (see Block size). Non-integer quantities are rounded up to the next higher unit.
If an argument file is a disk device file containing a mounted file system, df shows the space available on that file system rather than on the file system containing the device node (i.e., the root file system). gnu df does not attempt to determine the disk usage on unmounted file systems, because on most kinds of systems doing so requires extremely nonportable intimate knowledge of file system structures.
The program accepts the following options. Also see Common options.
- '-a'
- '--all'
- Include in the listing dummy file systems, which are omitted by default.
Such file systems are typically special-purpose pseudo-file-systems, such as
automounter entries.
- '-B size'
- '--block-size=size'
- Scale sizes by size before printing them (see Block size). For example, -BG prints sizes in units of 1,073,741,824 bytes.
- '--total'
- Print a grand total of all arguments after all arguments have been processed.
This can be used to find out the total disk size, usage and available space
of all listed devices.
- '-h'
- '--human-readable'
- Append a size letter to each size, such as 'M' for mebibytes.
Powers of 1024 are used, not 1000; 'M' stands for 1,048,576 bytes.
This option is equivalent to --block-size=human-readable. Use the
--si option if you prefer powers of 1000.
- '-H'
- Equivalent to --si.
- '-i'
- '--inodes'
- List inode usage information instead of block usage. An inode (short for
index node) contains information about a file such as its owner, permissions,
timestamps, and location on the disk.
- '-k'
- Print sizes in 1024-byte blocks, overriding the default block size (see
Block size). This option is equivalent to --block-size=1K.
- '-l'
- '--local'
- Limit the listing to local file systems. By default, remote file systems
are also listed.
- '--no-sync'
- Do not invoke the
sync
system call before getting any usage data. This may make df run significantly faster on systems with many disks, but on some systems (notably SunOS) the results may be slightly out of date. This is the default.
- '-P'
- '--portability'
- Use the POSIX output format. This is like the default
format except for the following:
- The information about each file system is always printed on exactly one line; a mount device is never put on a line by itself. This means that if the mount device name is more than 20 characters long (e.g., for some network mounts), the columns are misaligned.
- The labels in the header output line are changed to conform to POSIX.
- The default block size and output format are unaffected by the DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables. However, the default block size is still affected by POSIXLY_CORRECT: it is 512 if POSIXLY_CORRECT is set, 1024 otherwise. See Block size.
- '--si'
- Append an SI-style abbreviation to each size, such as 'M' for
megabytes. Powers of 1000 are used, not 1024; 'M' stands for 1,000,000
bytes. This option is equivalent to --block-size=si. Use the
-h or --human-readable option if you prefer powers
of 1024.
- '--sync'
- Invoke the
sync
system call before getting any usage data. On some systems (notably SunOS), doing this yields more up to date results, but in general this option makes df much slower, especially when there are many or very busy file systems.
- '-t fstype'
- '--type=fstype'
- Limit the listing to file systems of type fstype. Multiple file
system types can be specified by giving multiple -t options. By
default, nothing is omitted.
- '-T'
- '--print-type'
- Print each file system's type. The types printed here are the same ones
you can include or exclude with -t and -x. The particular
types printed are whatever is supported by the system. Here are some of the
common names (this list is certainly not exhaustive):
- 'nfs'
- An NFS file system, i.e., one mounted over a network
from another machine. This is the one type name which seems to be used uniformly
by all systems.
- '4.2, ufs, efs...'
- A file system on a locally-mounted hard disk. (The system might even
support more than one type here; Linux does.)
- 'hsfs, cdfs'
- A file system on a CD-ROM drive. HP-UX uses 'cdfs', most
other systems use 'hsfs' ('hs' for "High Sierra").
- 'pcfs'
- An MS-DOS file system, usually on a diskette.
- '-x fstype'
- '--exclude-type=fstype'
- Limit the listing to file systems not of type fstype. Multiple
file system types can be eliminated by giving multiple -x options.
By default, no file system types are omitted.
- '-v'
- Ignored; for compatibility with System V versions of df.
An exit status of zero indicates success, and a nonzero value indicates failure. Failure includes the case where no output is generated, so you can inspect the exit status of a command like 'df -t ext3 -t reiserfs dir' to test whether dir is on a file system of type 'ext3' or 'reiserfs'.
Etc
Society
Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers : Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism : The Iron Law of Oligarchy : Libertarian Philosophy
Quotes
War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Somerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Bernard Shaw : Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds : Larry Wall : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOS : Programming Languages History : PL/1 : Simula 67 : C : History of GCC development : Scripting Languages : Perl history : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history
Classic books:
The Peter Principle : Parkinson Law : 1984 : The Mythical Man-Month : How to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|
You can use PayPal to to buy a cup of coffee for authors of this site |
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.
Last modified: March 29, 2020