You can observe the progress softwareupdate
is making by viewing its logging messages.
Just run sudo log stream --predicate "processImagePath Contains[c] 'softwareupdate'"
in another terminal to view the log messages live. Or look at logged messages during the last 10 minutes by using sudo log show --last 10m --predicate...
Its logging is quite noisy, but some of these relay the current progress. There's a separate progress counter both for the software download, and the install.
For example, while in the install phase I see messages like this:
$ sudo log stream --predicate "processImagePath Contains[c] 'softwareupdate'"
2020-10-23 16:41:50.036577-0700 0x10343ce Default 0x0 1495 0 softwareupdated: (BridgeOSSoftwareUpdate) [com.apple.BridgeOSSoftwareUpdate:] -[BridgeOSSoftwareUpdateController _handleEvent:]: received progress: PrepareUpdate = 6.650325
2020-10-23 16:41:50.036650-0700 0x1033b05 Default 0x0 1495 30 softwareupdated: (BridgeOSInstall) [com.apple.mac.install:BridgeOSInstall] Preparing update progress: 6.65
2020-10-23 16:41:51.369927-0700 0x1033b05 Default 0x0 1495 0 softwareupdated: (BridgeOSSoftwareUpdate) [com.apple.BridgeOSSoftwareUpdate:] -[BridgeOSSoftwareUpdateController _handleEvent:]: received progress: PrepareUpdate = 6.957522
2020-10-23 16:41:51.370001-0700 0x10343ce Default 0x0 1495 30 softwareupdated: (BridgeOSInstall) [com.apple.mac.install:BridgeOSInstall] Preparing update progress: 6.96
2020-10-23 16:41:54.500204-0700 0x10343ce Default 0x0 1495 0 softwareupdated: (BridgeOSSoftwareUpdate) [com.apple.BridgeOSSoftwareUpdate:] -[BridgeOSSoftwareUpdateController _handleEvent:]: received progress: PrepareUpdate = 6.957528
2020-10-23 16:41:54.500280-0700 0x1033b05 Default 0x0 1495 30 softwareupdated: (BridgeOSInstall) [com.apple.mac.install:BridgeOSInstall] Preparing update progress: 6.96
2020-10-23 16:41:55.501118-0700 0x1033b05 Default 0x0 1495 0 softwareupdated: (BridgeOSSoftwareUpdate) [com.apple.BridgeOSSoftwareUpdate:] -[BridgeOSSoftwareUpdateController _handleEvent:]: received progress: PrepareUpdate = 7.303767
2020-10-23 16:41:55.501181-0700 0x1033b05 Default 0x0 1495 30 softwareupdated: (BridgeOSInstall) [com.apple.mac.install:BridgeOSInstall] Preparing update progress: 7.30
2020-10-23 16:41:56.615577-0700 0x10343c2 Default 0x0 1495 0 softwareupdated: (BridgeOSSoftwareUpdate) [com.apple.BridgeOSSoftwareUpdate:] -[BridgeOSSoftwareUpdateController _handleEvent:]: received progress: PrepareUpdate = 87.186295
2020-10-23 16:41:56.615655-0700 0x10343c2 Default 0x0 1495 30 softwareupdated: (BridgeOSInstall) [com.apple.mac.install:BridgeOSInstall] Preparing update progress: 87.19
2020-10-23 16:41:57.964143-0700 0x1033b05 Default 0x0 1495 0 softwareupdated: (BridgeOSSoftwareUpdate) [com.apple.BridgeOSSoftwareUpdate:] -[BridgeOSSoftwareUpdateController _handleEvent:]: received progress: PrepareUpdate = 91.111293
2020-10-23 16:41:57.964214-0700 0x10343c2 Default 0x0 1495 30 softwareupdated: (BridgeOSInstall) [com.apple.mac.install:BridgeOSInstall] Preparing update progress: 91.11
Or try a command like this: sudo log stream --predicate "processImagePath Contains[c] 'softwareupdate' AND eventMessage Contains[c] 'progress'"
, which will filter the log messages to only include ones that contain the string 'progress'
Also for reference, after running softwareupdate --dump-state
you can see the information it dumps in /var/log/install.log
.
dump-state
. – orome Mar 26 '19 at 18:20